JSF无法在preRenderView中添加FacesMessage

时间:2015-05-05 16:26:35

标签: jsf facelets mojarra

我有一个facelet页面,用于定义文档的内容,如下所示:

<ui:composition template="template.jspx">
<ui:define name="content">
    <f:event type="preRenderView" listener="#{myBB.initialize}"/>
    <f:view>
        <h:form id="mainForm">
            <p:growl for="mainForm" showDetail="true" showSummary="true" escape="false" sticky="true" widgetVar="growlVar"/>
            <p:outputText value="#{myBB.value}"/>
...

myBB是一个ViewScoped bean。监听器myBB.initialize使用FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, title, detail)

添加FacesMessage

问题是邮件永远不会显示。我已经验证该消息已添加到FacesContext并且未被清除(我已调试getter myBB.value并且消息仍在FacesContext中)。

当我强制使用getFlash().setKeepMessages(true)保留邮件时,它会起作用,但之后我会多次收到邮件。这只是一个测试,咆哮工作,而不是一个真正的解决方案。

我尝试将f:event放到不同的地方并使用@PostContruct方法代替preRenderView,但没有任何运气。我是否需要在页面加载后以某种方式手动更新咆哮?

我使用Mojarra 2.2.7

0 个答案:

没有答案