如何通过JSF捕获/显示bean验证约束违规错误?

时间:2011-09-16 20:55:36

标签: jsf error-handling bean-validation

当我尝试提交一个JSF表单,在其属性上引用具有bean验证注释的实体时,JSF会在违反bean验证约束时显示bean验证错误。

我想知道:

  • 实体验证的时间是什么时候?
  • 如何处理/将bean验证错误链接到视图?

2 个答案:

答案 0 :(得分:4)

  

实体验证的时间是什么时候?

在JSF验证阶段(JSF生命周期的第3阶段),收集和应用提交的值(第2阶段)和更新模型值(第4阶段)之间。


  

如何处理/链接bean验证错误到视图?

任何验证器(和转换器)异常消息都会转换/存储在FacesMessage中,FacesContextFacesContext#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