Primefaces选项卡中的页面重定向问题?

时间:2015-11-20 07:45:58

标签: jsf jsf-2 primefaces

以下是我正在尝试运行的代码

ChildTemplate.xhtml

<ui:composition template="../templates/home-template-new.xhtml" 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:p="http://primefaces.org/ui">
    <ui:define name="content">
        <h:outputStylesheet library="css" name="primeface_default.css" />
        <p:tabView dynamic="true" cache="true" id="tabView">
            <p:tab title="A">
                <ui:insert name="equipList">
                    <ui:include src="../AList.xhtml" />
                </ui:insert>
            </p:tab>
            <p:tab title="B">
                <ui:insert name="terminationList">
                    <ui:include src="../BList.xhtml" />
                </ui:insert>
            </p:tab>
        </p:tabView>
    </ui:define>
</ui:composition>

这是 BList.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:p="http://primefaces.org/ui">
<p:dataTable value="#{bean.fetchTemp()}" var="temp" reflow="true" resizableColumns="true" liveResize="true"
    id="table2">
    <p:column>  
          ........ 
          ........
    </p:column>
    <f:facet name="footer">
        <div class="divTableFooter" align="right" id="footerDiv6">
            <p:panelGrid>
                <p:commandLink id="create"
                    action="#{bean.methodName()}">
                </p:commandLink>
                <h:link value="LinkName" outcome="AddRecord" />
            </p:panelGrid>
        </div>
    </f:facet>
</p:dataTable>
</ui:composition>

现在让我来定义问题

现在,我的有效标签为 B ,当我点击<p:commandLink/><h:link />时,它会重定向并显示标签 A 应在当前有效标签B中显示 AddRecord.xhtml 页面。

我的代码出了什么问题?有人可以建议吗?

1 个答案:

答案 0 :(得分:2)

您可以为activeIndex组件添加tabview属性,并使用tabchange撰写p:ajax个活动。请检查以下代码

<h:outputStylesheet library="css" name="primeface_default.css" />
        <p:tabView dynamic="true" cache="true" id="tabView" activeIndex="#{bean.tabIndex}">
        <p:ajax event="tabChange" listener="#{bean.onTabChange}"  />
            <p:tab title="Equipment"  >
                <ui:insert name="equipList">
                    <ui:include src="../AList.xhtml" />
                </ui:insert>
            </p:tab>
            <p:tab title="Termination">
            <ui:insert name="terminationList">
                    <ui:include src="../BList.xhtml" />
                </ui:insert>
            </p:tab>
    </p:tabView>

在您的bean中定义tabIndex变量并实现onTabChange方法

private boolean popupEdit;
public final void onTabChange(final TabChangeEvent event) {
    TabView tv = (TabView) event.getComponent();
    this.tabIndex = tv.getChildren().indexOf(event.getTab());
}

希望这会对你有所帮助