0

1つだけ欲しい

<p:growl id="messages"/>   

そのため、プロジェクト全体に対して、ページ要素などをメインフォーム内のフォームとして1つのフォームを作成しました。これは、次のようなものです。

    <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> 

これらのパネルの1つ..(xhtml)ファイルに、メインページのうなり声に表示されていないメッセージが表示された場合に問題が発生します。私は、グローバルで運がないので、試してみました。

結論:自分のサイトのすべてのメッセージを処理するために、ap:growlを一度作成するにはどうすればよいですか?

なにか提案を

事前にThnx

4

2 に答える 2

0

複数のフォームをネストしないでください(あなたが言ったように)。

カプセル化してみる

<p:growl .../> 

他のインクルードの前に 1 つのフォームでタグ付けし、autoUpdate 属性を true のままにします。コンポーネント ID「null」の FacesMessages のみが表示されるように、globalOnly 属性を削除します。

<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 に答える