我有以下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>
答案 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
这适合我。