【问题标题】:validate input field in jsf datatable验证 jsf 数据表中的输入字段
【发布时间】:2010-02-02 14:41:42
【问题描述】:

我在 jsf 数据表中有输入字段,我正在验证并添加错误消息,但没有显示错误消息。验证jsf数据表中的输入字段并添加消息的最佳方法是什么。

<h:inputTextarea id="textarea1" styleClass="inputTextarea" value="#{varreviewList.comment}">
 <f:attribute name="msgRef" value="Valid comment is Required."/>
</h:inputTextarea>
<h:message  styleClass="message" for="textarea1" id="textarea1Msg"></h:message>

任何帮助都很棒。

谢谢, 苏吉特

【问题讨论】:

    标签: jsf datatable


    【解决方案1】:

    目前的代码看起来不错,假设它们都放在 &lt;h:column&gt; 内(但不一定是 same 列),所以问题出在其他地方。

    如果您毕竟只是想验证该值是否已填充,那么您只需将required="true" 添加到相关组件中。

    <h:inputSomething required="true" />
    

    如果您想覆盖默认的必需消息,请使用 requiredMessage 属性(仅限 JSF 1.2 起)

    <h:inputSomething required="true" requiredMessage="Please enter value!" />
    

    ...或在applicationmessage-bundle 中使用以下行提供自定义messages.properties faces-config.xml

    javax.faces.component.UIInput.REQUIRED = Please enter {0}.
    

    ...{0} 可通过以下方式控制(仅从 JSF 1.2 开始,否则为 clientId)。

    <h:inputSomething label="This field" />
    



    或者如果你毕竟想要一个自定义验证器,那么你需要实现javax.faces.validator.Validator,在faces-config.xml中注册为validator

    <validator>
        <validator-id>myValidator</validator-id>
        <validator-class>com.example.MyValidator</validator-class>
    </validator>
    

    ...并通过validator属性将其附加到输入组件

    <h:inputSomething validator="myValidator" />
    

    ...或f:validator facet(以便您可以将多个验证器附加到一个组件)

    <h:inputSomething>
        <f:validator validatorId="myValidator" />
    </h:inputSomething>
    

    在实现的validate() 方法中,只要需要throw ValidatorException 和所需的FacesMessage

    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
        if (value does not match some condition) {
            throw new ValidatorException(new FacesMessage("Please enter valid value"));
        }
    }
    

    然后它会自动显示在相关的消息组件中。

    【讨论】:

    • 嗨 BalusC,感谢您的回复,我编写了自定义验证器,但我的验证器没有被调用。当我单击命令按钮时,它会起作用。我的页面中没有任何必填字段。我需要在某些情况下检查验证。我在 faces config 中注册了验证器,并在 jsf 页面中指定了类似的内容。
    • 附加的验证器在值为not为空或为空时被调用。对于该部分,您通常使用required 属性。您可能需要详细说明确切的功能要求,以便我们提供更合适的答案。也许您想验证某个条件/依赖关系?
    • 再次感谢我让验证器工作。我的要求是我必须检查依赖关系并在数据表行中显示错误消息。我能够添加错误消息并在全局范围内显示消息,但不能在数据表行中。示例:如果需要第 5 行注释,则我必须在数据表的第 5 行第 3 列(注释进入第 3 列)中显示错误消息。
    • 我已经有 但没有显示消息。
    • 感谢 BalusC 的回复,但在我看来,数据表内部 h:message 与输入字段的关联无法正常工作。我尝试使用自定义验证器和服务器端验证。我正在正确添加消息,但是当它呈现消息时没有显示。再次感谢 cmets。
    【解决方案2】:

    这在数据表中为我工作:

        <ice:inputText id="inputTextt" field="#{bean[fieldValue]}" required="true"/>
    <ice:message for="inputTextt"></ice:message>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2013-10-10
      • 2023-03-14
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多