0

我需要一些帮助,我正在使用 primefaces 3.1 并做一些页面,我想将这些页面加载到 tabview 中,并且每个页面相互依赖。

像这样。

<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 请求应该发生什么
  • listener:事件发生时会收到通知
  • 更新:在给定的 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 回答