我在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
答案 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>