【问题标题】:Remove JSF error messages删除 JSF 错误消息
【发布时间】:2012-08-19 19:40:02
【问题描述】:

我正在使用带有 primefaces 3.3.1 的 JSF 2。

我在我的 template.xhtml 页面中使用了表单标签,并将我的所有页面都包含在其中。所以所有页面都在同一个表单下。我的场景是:我有两个面板,一个是客户搜索面板,另一个是客户搜索结果面板。客户搜索面板包含一些文本框和一个命令按钮。在该文本框中,我将提供有关客户的一些输入,然后单击命令按钮。之后,我必须加载包含一个带有搜索结果的数据表的客户搜索结果面板。

最初我将只加载客户搜索面板。单击命令按钮后,只有我会加载客户搜索面板。在我的客户搜索面板的那个命令按钮中,我在更新属性中给出了客户搜索结果面板的 ID。喜欢

<p:commandButton value="click" action="#{bean.action}" update="cust_search_panel"/>

当我按下命令按钮时,jsf 显示“找不到标识符为 cust_search_panel 的组件”。因为最初我不会加载客户搜索结果面板,所以 id 不会在那里。

使用 primefaces 2.2.1 时没有问题,因为如果组件不在表单中,那么他们将添加信息消息说“找不到标识符为 cust_search_panel 的组件”。但在 primefaces 3.3.1 中,他们将该信息消息更改为错误消息。所以现在我的页面因为这个错误而没有被加载。

当我们收到类似“找不到标识符为 cust_search_panel 的组件”这样的消息时,如果可以从 facescontext 中删除该错误消息,那么我的页面将正确加载吗?

除此之外,我还没有找到任何解决方案。谁能帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    你试过了吗

    <p:commandButton value="click" action="#{bean.action}" update=":cust_search_panel"/>
    

    ?

    【讨论】:

      【解决方案2】:

      我不知道任何其他简单的解决方案。但这应该可行:

      从您的操作方法更新组件并删除按钮上的更新属性。

      if (context.getViewRoot().findComponent("myForm:cust_search_panel") != null){
           RequestContext.getCurrentInstance().update("cust_search_panel");
      }
      

      【讨论】:

        【解决方案3】:

        引用不存在的元素是错误的,JSF 应该显示错误。如果 JSF 允许加载页面,这将导致 JavaScript 错误。

        处理这个问题的正确方法是引用父元素。因此,在您的情况下,您应该渲染面板并隐藏数据表。命令按钮应该更新包含数据表的面板。

        例子:

        <p:commandButton value="click" action="#{bean.action}" update="cust_search_panel"/>
        
        <your-container id="cust_search_panel">
            <p:dataTable rendered="#{bean.someCondition" .../>
        </your-container>
        

        【讨论】:

        • 非常感谢 siebz0r 的帮助.. 你的建议救了我
        猜你喜欢
        • 2011-03-21
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        • 2011-03-12
        • 2014-09-11
        • 2021-06-17
        • 2011-05-26
        • 2016-11-17
        相关资源
        最近更新 更多