我想知道是否有可能绕过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>

10-07 19:08
查看更多