0

私はいくつかの助けが必要です.primefaces 3.1を使用していくつかのページを実行しています.このページをタブビューにロードしたいのですが、各ページは互いに依存しています.

このような。

<p:tabView id="tabView1">
        <p:tab id="tabInfo" title="title1">
            <ui:include src="page1.xhtml"/>
        </p:tab>
        <p:tab id="tab2" title="title2" >
            <ui:include src="page2.xhtml"/>
        </p:tab>
        <p:tab id="tab3" title="title3">
            <ui:include src="page3.xhtml"/>
        </p:tab>
    </p:tabView>

ページ2は、いくつかの検証を行うためにフォームページ1に依存し、ページ2にこの情報を提示するかどうかに関係なく、ページ3にも同じことが必要です。

tab2 を選択してページ 2 の ManagedBean を再度呼び出し、ページ 2 をリロードしてその検証を行い、データを表示する場合はどうすればよいですか?

この検証と情報のすべての検索は、init メソッドにあります。

これで私を助けてください。

そして、下手な英語で申し訳ありません。

ありがとう、

4

1 に答える 1

2

次のようなものを tabView に追加する必要があります。

<p:tabView id="tabView1">
     <p:ajax event="tabChange" listener="#{yourBean.onTabChange}" update=":tab2"/>
...
  • イベント: ajax リクエストを開始するために何が起こるべきかを定義します
  • リスナー: イベントが発生した場合に通知されます
  • 更新: 指定された ID で再レンダリングを行います

あなたのコメントに答えるために更新してください:

メソッドonTabChangeは次のようになります。

public void onTabChange(TabChangeEvent event) {  
    // ... 
} 

イベントは、選択されたタブを提供します:

event.getTab()

以下を使用して、すべてのタブを再レンダリングできるようになりました。

... update=":tabInfo, :tab2, :tab3"

または、選択したタブを Bean に保存して、次のようにします。

... update="#{yourBean.selectedTab}"

selectedTabは次のようになります。

public String getSelectedTab(){
     // selectedTab is a variable that should be set onTabChange()
     return selectedTab;
}
于 2012-04-04T20:47:26.087 に答える