【问题标题】:TabView primefaces 3.1 Reload a page inside a tab and call again the ManagedBeanTabView primefaces 3.1 在选项卡内重新加载页面并再次调用 ManagedBean
【发布时间】:2012-04-18 14:47:41
【问题描述】:

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

请帮帮我。

我为我糟糕的英语道歉。

谢谢,

【问题讨论】:

    标签: java jsf tabs primefaces tabview


    【解决方案1】:

    您需要在 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;
    }
    

    【讨论】:

    • 感谢您的回答,但如果我需要在 tab3 上重新加载页面,会发生什么情况?onTabChange 方法中应该包含什么?
    • 非常感谢我会试试这个。
    猜你喜欢
    • 2014-09-12
    • 2023-03-17
    • 2012-09-27
    • 1970-01-01
    • 2011-03-28
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多