0

我只想拥有一个

<p:growl id="messages"/>   

所以我为整个项目创建了一个表单,其中包含页面元素等作为主要表单中的表单,就像这样。

    <h:form id="mainForm">  
        <p:growl id="messages" showDetail="true" autoUpdate="true" globalOnly="true" for="mainForm"/>   

        <div id="container">
            <div id="banner" >
                <a><img src="#{facesContext.externalContext.requestContextPath}/images/logo.png" alt="" border="0" /></a>
                <ui:insert name="head">
                    <ui:include src="/panels/header.xhtml" />
                </ui:insert>

            </div>
            <div id="content">
                <ui:insert name="content">
                    <ui:include src="/panels/main.xhtml" />
                </ui:insert>
            </div>
            <div id="right">
                <ui:insert name="right-sidebar">
                    <ui:include src="/panels/box.xhtml" />
                </ui:insert>
            </div>

            <div id="footer"><h1>Footer</h1></div>

        </div>
    </h:form> 

当其中一个面板..(xhtml)文件显示一条消息时,问题就出现了,它没有在主页的咆哮声中显示。我已经尝试过,全球性的,但没有运气。

总之:我如何创建一次 ap:growl 来处理我网站的所有消息?

任何建议

提前谢谢

4

2 回答 2

0

您不应该嵌套多个表单(正如您所说的那样)。

尝试封装

<p:growl .../> 

在一个表单中标记另一个表单,然后将 autoUpdate 属性保留为 true。删除 globalOnly 属性,因为这会影响,只有组件 id 为“null”的 FacesMessages 将被显示:

<h:form id="mainForm">  
    <p:growl id="messages" showDetail="true" autoUpdate="true"/> 
</h:form>  

    <div id="container">
        <div id="banner" >
            <a><img src="#{facesContext.externalContext.requestContextPath}/images/logo.png" alt="" border="0" /></a>
            <ui:insert name="head">
                <ui:include src="/panels/header.xhtml" />
            </ui:insert>

        </div>
        <div id="content">
            <ui:insert name="content">
                <ui:include src="/panels/main.xhtml" />
            </ui:insert>
        </div>
        <div id="right">
            <ui:insert name="right-sidebar">
                <ui:include src="/panels/box.xhtml" />
            </ui:insert>
        </div>

        <div id="footer"><h1>Footer</h1></div>

    </div>

希望这对你有帮助!

于 2013-01-26T18:38:17.590 回答
0

最后我设法让它工作,这很简单,正如我所怀疑的那样,我必须更新处理消息的咆哮。

     <h:form id="mainForm">  
        <p:growl id="messages" showDetail="true" autoUpdate="true"/>   
     </h:form>  

喜欢,检查更新方法。

  <p:commandButton  id="logBut" value="Login" actionListener="#{loginBean.loginUser}" update=":mainForm:message" icon="ui-icon-carat-1-e"/>  

它可以在有或没有嵌套形式的情况下工作。

于 2013-01-29T16:50:06.617 回答