TabView primefaces 3.1在选项卡内重新加载页面并再次调用ManagedBean

时间:2012-04-04 20:34:50

标签: java jsf tabs primefaces tabview

我需要一些帮助,我正在使用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方法上。

请帮助我。

我为我可怜的英语道歉。

谢谢,

1 个答案:

答案 0 :(得分:2)

您需要在tabView中添加以下内容:

<p:tabView id="tabView1">
     <p:ajax event="tabChange" listener="#{yourBean.onTabChange}" update=":tab2"/>
...
  • event:定义启动ajax请求应该发生什么
  • listener:如果事件发生,将会收到通知
  • update:对给定的ID进行重新渲染

更新以回复您的评论:

方法 onTabChange 可能如下所示:

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

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