我已经阅读了几十个关于类似问题的问题,但找不到答案。我在表单中有这段代码:
<p:outputPanel id="articleInfo">
<p:growl id="messages" autoUpdate="true"/>
<p:panel rendered="#{not empty myBB.selectedProduct}">
<p:panel>
<h:outputText escape="false" value="#{myBB.content}"/>
</p:panel>
<p:commandButton value="Button" update=":mainForm:articleInfo"/>
</p:panel>
</p:panel>
当我点击按钮时,会在辅助bean中生成新内容,并添加FacesMessage
,如下所示:
public String getContent(){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, title, detail));
return "something";
}
ajax更新很好,因为我看到了新的内容,addMessage
也被调用,但我看不到消息。我尝试p:messages
而不是咆哮,添加for="mainForm:articleInfo"
并使用“mainForm:articleInfo”调用addMessage
(我已经检查过它是视图中的正确ID。
我仍然无法找到理由。
答案 0 :(得分:1)
您的messages
未显示because
的原因是您添加了代码以在getter
中添加不是ideal
的邮件。
Why getter gets called multiple times
删除添加的消息代码并放入method
内部action
调用。{/ p>