当我尝试提交一个JSF表单,在其属性上引用具有bean验证注释的实体时,JSF会在违反bean验证约束时显示bean验证错误。
我想知道:
答案 0 :(得分:4)
实体验证的时间是什么时候?
在JSF验证阶段(JSF生命周期的第3阶段),收集和应用提交的值(第2阶段)和更新模型值(第4阶段)之间。
如何处理/链接bean验证错误到视图?
任何验证器(和转换器)异常消息都会转换/存储在FacesMessage
中,FacesContext
由FacesContext#addMessage()
添加。所有这些消息依次单独显示在绑定到特定输入组件的<h:message>
组件
<input id="foo" value="#{bean.foo}" />
<h:message for="foo" />
<input id="bar" value="#{bean.bar}" />
<h:message for="bar" />
或全部在通用<h:messages/>
组件中
<h:messages />
所有遗漏的验证消息都将记录到stdout,或者当您在开发阶段中运行时,在开发阶段警告消息中会自动添加到视图中。
答案 1 :(得分:1)
在将Request值提交给服务器之后但在将它们应用于Model Bean之前进行验证。这确保了模型的完整性。在此过程中存在数据类型转换,如果JSF标准验证器和转换器不足以验证您的数据类型,则可以插入自己的数据类型。本教程描述了JSF中提供的standard validators and converters。
要编写自定义验证程序,请参阅O'Reilly's book on JSF。