我想知道是否有可能绕过JSF2中某些操作的bean验证器。
我已经使用NetBeans 7从数据库架构中生成了实体,其中包括验证属性。
在我的JSF应用程序中,我有一个搜索屏幕,其支持Bean的对象使用一个实体实例来保存用户的查询参数。然后,我在实体实例上使用反射来生成动态查询以执行用户的搜索。用户执行搜索后,他们可以选择一个项目,然后转到编辑页面,在该页面上我希望执行验证。
我的问题是在搜索屏幕上,我的实体上的bean验证被强制执行。因此,如果我的实体有3个必填字段,并且用户仅搜索3个中的1个,则会收到两个“必填字段”错误消息。
我知道我可以通过为搜索后备bean创建一个新类来解决这个问题,该类上没有验证批注,但是对于我来说这似乎不是理想的解决方案:我最终得到了两个基本相同的类,只是带有不同的注释。
最佳答案
您可以将f:validateBean与disabled =“true”添加到您不想对其进行验证的第一个表单中,然后在执行该操作的 View 中不包括它:
<h:inputText value="#{entity.property}">
<f:validateBean disabled="#{true}"/>
</h:inputText>