【问题标题】:Ignore custom validation, but not the required="true" depending on button pressed忽略自定义验证,但不是 required="true" 取决于按下的按钮
【发布时间】:2015-07-31 00:53:32
【问题描述】:

我正在使用 JSF,我想验证一个表单。 表单中有一个由required="true" 和验证器方法验证的文本字段。

<h:inputText
    required="true" requiredMessage="Please enter a topic" 
    validator="#{eventController.validateTopic}" />

要提交表单,我有两个按钮。单击第一个时,应仅验证该字段是否为空。到第二个时,应该另外调用自定义验证。 这可能吗?

【问题讨论】:

    标签: forms validation jsf commandbutton


    【解决方案1】:

    首先将该验证方法转化为真正的Validator 实现。

    @FacesValidator("topicValidator")
    public TopicValidator implements Validator {}
    

    然后您可以在支持disabled 属性的&lt;f:validator&gt; 中使用它。

    <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 共享。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      相关资源
      最近更新 更多