验证jsf datatable中的输入字段

时间:2010-02-02 14:41:42

标签: jsf datatable

我在jsf datatable中有输入字段,我正在验证并添加错误消息但是没有显示错误消息。验证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>

任何帮助都很棒。

谢谢, Sujit

2 个答案:

答案 0 :(得分:3)

代码到目前为止看起来很好,假设它们都放在<h:column>内(不一定是相同的列),所以问题出在其他地方。

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

<h:inputSomething required="true" />

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

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

...或在messages.properties application message-bundle中使用以下行提供自定义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,在validator

中将其注册为faces-config.xml
<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"));
    }
}

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

答案 1 :(得分:0)

这对我来说是一个数据表:

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