在JSF2中绕过bean验证?

时间:2011-05-13 21:16:30

标签: jsf bean-validation

我想知道是否可以绕过JSF2中某些操作的bean验证器。

我使用NetBeans 7从我的数据库模式生成实体,其中包含验证属性。

在我的JSF应用程序中,我有一个搜索屏幕,谁支持bean使用实体的实例来保存用户的查询参数。然后,我在实体实例上使用反射来生成动态查询以执行用户的搜索。一旦用户执行搜索,他们就可以选择一个项目,然后转到我希望执行验证的编辑页面。

我的问题是在搜索屏幕上强制执行我的实体上的bean验证。因此,如果我的实体有3个必填字段,并且用户只搜索3个中的1个,我会收到两个“字段是必填的”错误消息。

我知道我可以通过为我的搜索支持bean创建一个没有验证注释的新类来解决这个问题,但这对我来说似乎不是一个理想的解决方案:我最终得到两个基本相同的类,只是带有不同的注释。

2 个答案:

答案 0 :(得分:4)

您可以将f:validateBean with disabled =“true”添加到您不希望它们验证的第一个表单中,然后不将其包含在您执行的视图中:

<h:inputText value="#{entity.property}">
   <f:validateBean disabled="#{true}"/>
</h:inputText>

答案 1 :(得分:2)

对于我来说,在icefaces中没有这样的工作:我不得不:

 <f:validateBean disabled="true" >
       <ice:outputText value="#{messages['busqueda.bodega.tabla.datos.etiqueta.nombre']}"/>   <ice:inputText" value="#busquedaBodegaBean.busquedaBodegaBB. bodegaCriterio.nombre}">
     </ice:inputText>
    </f:validateBean>