我已经为实体实现了一个自定义bean验证器及其自定义注释,以编写一些所需的非平凡的多字段验证逻辑。
我还有一个与此类实体相关联的JSF表单。单字段bean验证(@NotNull,@ Min等)可以正常工作:如果表单中的任何字段无效,则表单未提交,并且字段旁边会显示错误消息,如指定的那样。
但看起来JSF并不关心整个实体的自定义验证器:如果所有单字段验证都通过,则提交表单。稍后将捕获该错误,并且值不会保存到数据库中。
我尝试在处理提交的代码中实现手动验证,方法是添加FacesMessage并在出现错误时返回null,但随后清除所有表单字段,这不是很有用。
我想我也可以实现一个调用JSR-303自定义bean验证器的FacesValidator,但我想知道是否有更好的解决方案。