&#34; javax.servlet.ServletException:找不到组件&#34;对于<p:growl>组件?</p:growl>

时间:2014-05-06 10:21:12

标签: ajax jsf jsf-2 primefaces facelets

我有以下Facelets代码,在保存操作后对<p:growl>组件进行了更新。 但是在呈现页面时我有以下异常:

  

javax.servlet.ServletException:找不到带有“mainForm:form1:j_idt27”引用的表达式“:principal:display”的组件。

<ui:define id="principal" name="content">
    <p:growl id="display" showDetail="true" sticky="false" />

    <p:panel header="Gestion de projets">

        <h:form id="form1">
            <h:panelGrid columns="3">
                <h:outputText value="Nom du projet: *" />
                <p:inputText value="#{gestionProjetBean.nomProjet}"
                    required="true" label="Nom du projet" />
                <p:commandButton value="Save"
                    actionListener="#{gestionProjetBean.creerProjet(gestionProjetBean.nomProjet)}"
                    update=":principal:display" />
            </h:panelGrid>
        </h:form>

3 个答案:

答案 0 :(得分:2)

我终于找到了解决方案:应该是update=":mainForm:display"

对于那些面临同样问题的人, firebug 帮助我找到该组件的真实ID,方法是显示该页面的源代码并在其上搜索我的组件。

在那里,我发现了这个:

<div id="mainForm:msgs" class="ui-messages ui-widget" aria-live="polite"></div> <span id="mainForm:display"></span> <script id="mainForm:display_s" type="text/javascript"> $(function(){PrimeFaces.cw('Growl','widget_mainForm_display',{id:'mainForm:display',sticky:false,life:6000,escape:true,msgs:[]});}); </script>

另外,请不要忘记在&#34; &#34;之前添加ID。 (因为每个id都应该以NamingContainer分隔符字符&#34;:&#34;)

开头

答案 1 :(得分:0)

不要使用:principal:display try just:display

答案 2 :(得分:0)

试试这个   给面板组件一个id并修改如下代码

:panelid:display

这适合我。