代码就看起来不错,假设他们俩都放在里面<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}
是可控的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"));
}
}
它会自动显示在关联的消息组件中。
嗨BalusC,感谢您的回复我写自定义的验证,但我的验证是没有得到调用。当我点击命令按钮时,它会进入行动。我的网页中没有任何字段需要填写。我需要在某些情况下进行检查验证。我在faces config中注册了验证器,并在jsf页面中指定了这样的内容。 h:inputSomething> –
user263756
2010-02-02 19:05:31
附加的验证器将**仅当值为** not ** null或空时被调用**。对于那部分你通常使用'required'属性。您可能需要详细阐述确切的功能要求,以便我们能够提供更适合的答案。也许你想验证一定的条件/依赖? – BalusC 2010-02-02 19:47:30
再次感谢我验证工作。 我的要求是我必须检查数据表行中的依赖性和显示错误消息。我能够添加错误消息并全局显示消息,但不能在数据表行中添加。 示例:如果需要第5行COMMENT,那么我必须在第5行第3列(注释在第3列中)中显示数据表的错误消息。 – user263756 2010-02-02 22:12:17