2011-06-28 40 views
7

我有一個菜單欄在子菜單上的兩個項目,都調用同一個頁面:如何在Primefaces tabView中設置活動選項卡?

<p:menubar autoSubmenuDisplay="true"> 
    <p:submenu label="Perfil"> 
     <p:menuitem value="Editar" url="perfil.xhtml" /> 
     <p:menuitem value="Ver" url="perfil.xhtml" /> 
    </p:submenu> 
</p:menubar> 

在該網頁我有兩個選項卡的TabView的:

<p:tabView dynamic="true"> 
    <p:tab id="ver" title="Ver perfil"> 
     <ui:include src="verPerfil.xhtml" />  
    </p:tab> 
    <p:tab id="editar" title="Editar perfil"> 
    <ui:include src="editarPerfil.xhtml" /> 
    </p:tab> 
</p:tabView> 

我如何設置活動標籤,所以每個菜單項都激活相應的標籤頁?

回答

24

如果你想要做this.You不能使用url在​​,因爲我們必須之前調用一個方法來改變tabindex屬性跳躍到prefil.xhtml頁面。如果您使用url,則在跳轉到prefil.xhtml頁面後,將調用該方法。

首先,你可以使用​​的行動領域,該方法返回要跳到地址:

<p:menubar autoSubmenuDisplay="true"> 
    <p:submenu label="Perfil"> 
     <p:menuitem value="Editar" action="#{some.editar}" ajax="false"/> 
     <p:menuitem value="Ver" action="#{some.ver}" ajax="false" /> 
    </p:submenu> 
</p:menubar> 

這兩種方法做一些事情來改變這樣的tabindex屬性:

public String editar() { 
    tabindex = 0; 
    return "verPerfil"; 
} 

public String ver() { 
    tabindex = 1; 
    return "verPerfil"; 
} 

然後p:tabView有一個名爲activeIndex的屬性。它是活動選項卡的索引,其默認值爲0。所以你可以這樣做:

<p:tabView dynamic="true" activeIndex="#{some.tabindex}" > 
    <p:tab id="ver" title="Ver perfil"> 
     <ui:include src="verPerfil.xhtml" /> 
    </p:tab> 
    <p:tab id="editar" title="Editar perfil"> 
     <ui:include src="editarPerfil.xhtml" /> 
    </p:tab> 
</p:tabView> 

然後,每個menuitem將激活相應的選項卡。

+0

太好了,謝謝!它仍然沒有工作,activeIndex =「#{some.tabindex}」沒有得到索引的權利,但我明白了,我會從這裏開始工作。 –

+0

一點都不。如果仍然不行,你可以回覆我。^^ – FishGel

+0

好的,理查德的解決方案並不適合我的bean的範圍。它是viewscoped。我將它改爲SessionScoped並像魅力一樣工作。 –

相關問題