【发布时间】:2011-09-16 20:55:36
【问题描述】:
当我尝试提交引用实体的 JSF 表单时,其属性上带有 bean 验证注释,然后 JSF 在违反 bean 验证约束时显示 bean 验证错误。
我想知道:
- 实体何时验证?
- 它如何处理/链接 bean 验证错误到视图?
【问题讨论】:
标签: jsf error-handling bean-validation
当我尝试提交引用实体的 JSF 表单时,其属性上带有 bean 验证注释,然后 JSF 在违反 bean 验证约束时显示 bean 验证错误。
我想知道:
【问题讨论】:
标签: jsf error-handling bean-validation
实体何时验证?
在 JSF 验证阶段,即 JSF 生命周期的第三阶段,在收集和应用提交的值(第二阶段)和更新模型值(第四阶段)之间。
它如何处理/链接 bean 验证错误到视图?
任何验证器(和转换器)异常消息都被转换/存储在 FacesMessage 中,FacesContext#addMessage() 添加到 FacesContext 中。所有这些消息依次单独显示在绑定到特定输入组件的<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 />
所有缺少的验证消息都将记录到标准输出中,或者当您在开发项目阶段运行时,在开发阶段警告消息会自动添加到视图中。
【讨论】:
验证发生在请求值提交到服务器之后但在它们应用到模型 Bean 之前。这确保了模型的完整性。在此过程中有一个数据类型转换,如果 JSF 标准验证器和转换器不足以验证您的数据类型,您可以插入自己的插件。本教程描述了 JSF 中可用的 standard validators and converters。
如需编写自定义验证器,请参阅O'Reilly's book on JSF。
【讨论】:
@NotNull、@Pattern、@Min、@Max 等),它也有自己的创建自定义验证器的方法.这与 JSF 自己的验证器无关。