2010-02-02 70 views
1

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

任何帮助是伟大的。

感谢, Sujit

回答

3

代码就看起来不错,假设他们俩都放在里面<h:column>(不一定是相同列虽然),所以问题的关键在于别的地方。

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

<h:inputSomething required="true" /> 

如果要覆盖默认所需的消息,要么使用requiredMessage属性(因为JSF只有1.2)

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

...或提供定制messages.propertiesapplicationmessage-bundlefaces-config.xml用以下行

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

...其中{0}是可控的b y(因为只有JSF 1.2,否则它是clientId)。

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



或者,如果你以后都希望有一个自定义的验证,那么你就需要实现javax.faces.validator.Validator,在faces-config.xml

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

注册为validator ...并附它通过validator属性

输入组件
<h:inputSomething validator="myValidator" /> 

...或f:validator面(这样就可以连接多个验证一个组成部分)

<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")); 
    } 
} 

它会自动显示在关联的消息组件中。

+0

嗨BalusC,感谢您的回复我写自定义的验证,但我的验证是没有得到调用。当我点击命令按钮时,它会进入行动。我的网页中没有任何字段需要填写。我需要在某些情况下进行检查验证。我在faces config中注册了验证器,并在jsf页面中指定了这样的内容。 user263756 2010-02-02 19:05:31

+0

附加的验证器将**仅当值为** not ** null或空时被调用**。对于那部分你通常使用'required'属性。您可能需要详细阐述确切的功能要求,以便我们能够提供更适合的答案。也许你想验证一定的条件/依赖? – BalusC 2010-02-02 19:47:30

+0

再次感谢我验证工作。 我的要求是我必须检查数据表行中的依赖性和显示错误消息。我能够添加错误消息并全局显示消息,但不能在数据表行中添加。 示例:如果需要第5行COMMENT,那么我必须在第5行第3列(注释在第3列中)中显示数据表的错误消息。 – user263756 2010-02-02 22:12:17

0

这是为我工作里面一个DataTable:

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