在验证输入干扰时,使用JSF禁用Button

问题描述 投票:0回答:1

我正在使用JSF与Primefaces 5.3,并在启用/禁用commandButton时遇到问题。

首先,我有这样的输入:

<h:inputText id="series" value="#{bean.series}"
    required="false" converterMessage="Please enter three digits" >
    <f:validateRegex pattern="[0-9]{3}" />
    <p:ajax event="keyup" update="download"/>
    </h:inputText>

在辅助bean中,此字段是Integer

private Integer series;

我的目标是在输入不为空时启用/禁用“下载”按钮。我不在乎它是否无效,但只有它不包含任何字符。

<h:commandButton id="download" value="Download"
action="#{bean.download}" 
disabled="#{empty bean.series}"/>

更新事件在keyup上触发,但由于验证,辅助bean中的属性“series”始终为null。

你能帮我解决一下吗?谢谢

validation jsf
1个回答
0
投票

首先让我说明要求是不合逻辑的,因为如果值无效,你不能(至少在代码中没有其他变化)通过按钮提交表单。

但如果你真的想要这个,请使用Disable/Enable h:commandButton on validation fails/ is ok中的功能

<h:inputText id="series" value="#{bean.series}"
    required="false" converterMessage="Please enter three digits" binding="#{series}">
   <f:validateRegex pattern="[0-9]{3}" />
   <p:ajax event="keyup" update="download"/>
</h:inputText>

<h:commandButton id="download" value="Download" 
   action="#{bean.download}"  
   disabled="#{ ... EL using 'empty bean.series' and 'series.valid' ..." />

EL必须由您定义,因为您最清楚哪些空/非空和有效/无效的组合应该禁用该按钮

© www.soinside.com 2019 - 2024. All rights reserved.