使用tomahawk和jsf切换选项卡会导致整页刷新并再次加载所有数据

时间:2013-02-25 09:45:36

标签: jsf tomahawk

我正在使用“panelTabbedPane”并创建了3个具有不同处理元素的标签。完成第一个选项卡上的详细信息,切换到第二和第三个工作完全正常。但是一旦我决定从第3个标签切换到第1个或第2个标签,整个页面刷新和所有数据的加载再次发生。它对性能的巨大打击。任何人都可以帮助我吗?

 <t:panelTabbedPane enabledOnUserRole="true"
                binding="#{ABCController.tabSet}" serverSideTabSwitch="true"
                styleClass="tabbedPane" activeTabStyleClass="activeTab"
                inactiveTabStyleClass="inactiveTab"
                disabledTabStyleClass="disabledTab" activeSubStyleClass="activeSub"
                tabContentStyleClass="tabContent"
                immediateTabChange="false">

                <t:panelTab id="panelTab1" disabled="#{abc.disableTabOne}"
                    label="#{abc.tab1LabelTxt}">
                    <jsp:include page="./test1.jsp"></jsp:include>
                </t:panelTab>

                <t:panelTab id="panelTab2"  disabled="#{abc.disableTabTwo}"
                    label="#{abc.tab2LabelTxt}">
                    <jsp:include page="./test2.jsp"></jsp:include>
                </t:panelTab>

                <t:panelTab id="panelTab3" disabled="#{abc.disableTabThree}"
                    label="#{abc.tab3LabelTxt}" >
                    <h:outputText rendered="#{!abc.downloadView}">
                       <jsp:include page="./test3.jsp"></jsp:include>
                    </h:outputText>
                    <h:outputText rendered="#{abcn.downloadView}">
                        <jsp:include page="./test4.jsp" />
                    </h:outputText>
                </t:panelTab>

                <t:tabChangeListener
                    type="org.portlets.controller.ABCController" />
            </t:panelTabbedPane>

1 个答案:

答案 0 :(得分:0)

来自documentation

  

immediateTabChange

     

定义是否应在选项卡之间进行更改之前执行流程验证和更新模型阶段,当serverSideTabSwitch = true时(如果为false,则以其他方式完成切换,因此此属性不起任何作用)。请注意,如果将此属性设置为false,则只有在表单内的所有输入字段均有效(包括此面板外部的输入组件)时才会更改选项卡。默认情况下为true,因此不会执行两个阶段。

由于您有serverSideTabSwitch=true,因此更改标签是由您观察到的请求/响应周期完成的。然而,通过设置immediateTabChange=false,只有在您拥有所有可用选项卡之后才会发生这种情况。尝试设置serverSideTabSwitch=false(但我不知道最终会在哪些情况下提交标签数据,我自己也没有尝试过。)