5

私はprimefaces 4.0を使用しており、4つのタブを持つタブビューを持っています。いずれかのタブのボタンをクリックすると、すべてのタブが更新されますが、現在のタブが選択されたままになります。ただし、タブビューを更新すると、選択したタブが最初のタブに戻り続けます。

タブビュー全体を更新するときに現在のタブを維持する簡単な方法はありますか?

4

4 に答える 4

6

tabView の activeIndex 属性を使用できます。

<p:tabView activeIndex="#{bean.activeIndex}"/>

Primefaceユーザーガイドから:

activeIndex は、デフォルト値 0 の整数です。アクティブなタブのインデックス。

于 2013-11-02T10:48:35.947 に答える
1

他の答えに加えて、もう1つあります。これactiveIndexは実際にはクライアント側のインデックスです。つまり、レンダリングされていないタブがある場合は、補正する必要があるため、レンダリングされていないタブはインデックス番号にカウントされません。次のように実行できます。

String targetTabClientId = "my_tabview:my_tab";
Tab targetTab = (Tab) FacesContext.getCurrentInstance().getViewRoot().findComponent(targetTabClientId);
TabView tabView = (TabView) targetTab.getParent();

int clientActiveIndex = 0;
for (UIComponent tab : tabView.getChildren()) {
    if (tab.equals(targetTab))
        break;
    if (tab.isRendered())
        ++clientActiveIndex;
}
return clientActiveIndex;
于 2015-04-13T15:31:03.373 に答える
0

この簡単な解決策は私にとってはうまくいきます。これは、ヘッダーのようなタブ リストで、すべてのページで維持されます。

        <h:form id="menuForm">
            <p:tabMenu activeIndex="#{param.i}" >
                <p:menuitem value="Admin" outcome="/administration/index.xhtml?i=0" >
                    <f:param name="i" value="0"/>
                </p:menuitem>


                <p:menuitem value="Marketing" outcome="/marketing/index.xhtml?i=1" >
                    <f:param name="i" value="1"/>
                </p:menuitem>

                ...

            </p:tabMenu>
        </h:form>

次に、別のページに移動するボタンがある場合、ボタンは次のようになります。

<p:button outcome="/edit-user.xhtml?i=2" value="Edit User" />

ここでデモを見ることができます: http://www.primefaces.org/showcase/ui/menu/tabMenu.xhtml?i=0

于 2015-09-01T12:03:50.407 に答える