忽略自定义验证,但忽略必需的 = "true",具体取决于按下的按钮



我正在使用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共享。

参见:

    如何让验证依赖于按下的按钮?
  • 如何'绑定'属性在JSF中工作吗?何时以及如何使用?

相关内容

  • 没有找到相关文章

最新更新