忽略自定义验证,而不是 required="true" 取决于按下的按钮
Ignore custom validation, but not the required="true" depending on button pressed
我正在使用 JSF,我想验证一个表单。
表单中有一个文本字段,由 required="true"
和验证器方法验证。
<h:inputText
required="true" requiredMessage="Please enter a topic"
validator="#{eventController.validateTopic}" />
要提交表单,我有两个按钮。单击第一个时,应该仅在该字段为空时才进行验证。到第二个时,应该另外调用自定义验证。
这可能吗?
首先将该验证方法转变为真正的 Validator
实现。
@FacesValidator("topicValidator")
public TopicValidator implements Validator {}
然后你可以在支持disabled
属性的<f: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 共享。
另请参阅:
- How to let validation depend on the pressed button?
- How does the 'binding' attribute work in JSF? When and how should it be used?
我正在使用 JSF,我想验证一个表单。
表单中有一个文本字段,由 required="true"
和验证器方法验证。
<h:inputText
required="true" requiredMessage="Please enter a topic"
validator="#{eventController.validateTopic}" />
要提交表单,我有两个按钮。单击第一个时,应该仅在该字段为空时才进行验证。到第二个时,应该另外调用自定义验证。 这可能吗?
首先将该验证方法转变为真正的 Validator
实现。
@FacesValidator("topicValidator")
public TopicValidator implements Validator {}
然后你可以在支持disabled
属性的<f: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 共享。
另请参阅:
- How to let validation depend on the pressed button?
- How does the 'binding' attribute work in JSF? When and how should it be used?