Forms 忽略自定义验证,但不忽略必需的=";“真的”;取决于按下的按钮
我正在使用JSF,我想验证一个表单。 表单中有一个文本字段,由Forms 忽略自定义验证,但不忽略必需的=";“真的”;取决于按下的按钮,forms,validation,jsf,commandbutton,Forms,Validation,Jsf,Commandbutton,我正在使用JSF,我想验证一个表单。 表单中有一个文本字段,由required=“true”和验证器方法验证 <h:inputText required="true" requiredMessage="Please enter a topic" validator="#{eventController.validateTopic}" /> 要提交表单,我有两个按钮。单击第一个字段时,仅当字段为空时才应为“验证”。在第二种情况下,还应另外调用自定义验证。 这可能
required=“true”
和验证器方法验证
<h:inputText
required="true" requiredMessage="Please enter a topic"
validator="#{eventController.validateTopic}" />
要提交表单,我有两个按钮。单击第一个字段时,仅当字段为空时才应为“验证”。在第二种情况下,还应另外调用自定义验证。
这可能吗?首先将该验证方法转化为真正的实现
@FacesValidator("topicValidator")
public TopicValidator implements Validator {}
然后,您可以在支持禁用的
属性的中使用它
<h:inputText ...>
<f:validator validatorId="topicValidator" disabled="..." />
</h:inputText>
要让它检查是否按下了某个按钮,只需检查请求参数映射中是否存在其客户端ID
<h:inputText ...>
<f:validator validatorId="topicValidator" disabled="#{empty param[secondButton.clientId]}" />
</h:inputText>
...
<h:commandButton binding="#{secondButton}" ... />
...
注意:绝对不要将其绑定到bean属性!上面的代码是原样的。您应该只保证EL变量#{secondButton}
在当前视图中是唯一的,并且不被其他组件甚至托管bean共享
另见: