【问题标题】:Bypass bean validation in JSF2?在 JSF2 中绕过 bean 验证?
【发布时间】:2011-05-13 21:16:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: jsf bean-validation


    【解决方案1】:

    您可以将带有 disabled="true" 的 f:validateBean 添加到您不希望对其进行验证的第一个表单中,然后不将其包含在您执行操作的视图中:

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

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • ------------------------- 适合我(mojarra),但是这个答案和戴夫的答案有什么区别? -------------------------
      猜你喜欢
      • 2013-11-23
      • 2011-05-11
      • 1970-01-01
      • 2014-09-21
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      相关资源
      最近更新 更多