2011-06-28 4 views
7

mam paska menu, w którym dwie pozycje podmenu, zarówno wywołanie samej strony:Jak ustawić aktywną kartę w zakładce PrimElementsView?

<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> 

w tej stronie mam TabView z dwóch zakładek:

<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> 

Jak mogę ustawić aktywna karta, więc każde menuitem aktywuje odpowiednią zakładkę?

Odpowiedz

24

Jeśli chcesz zrobić this.You nie można używać url w p:menuitem ponieważ musimy wywołać metodę na zmianę tabIndex przed przejście do strony prefil.xhtml. Jeśli używasz url, metoda zostanie wywołana po przejściu na stronę prefil.xhtml.

Po pierwsze, można użyć pola działania p:menuitem, metoda zwraca adres chcesz przejść do:

<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> 

Te dwie metody coś zrobić, aby zmienić tabIndex takiego:

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

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

Następnie p:tabView ma atrybut o nazwie activeIndex. Jest to indeks aktywnej karty, jej domyślną wartością jest 0. Możesz więc wykonać następujące czynności:

<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> 

Następnie każdy element menu aktywuje odpowiednią zakładkę.

+0

świetnie, dzięki! to wciąż nie działa, activeIndex = "# {some.tabindex}" nie robi indeksu w prawo, ale mam pomysł, a ja to zrobię. –

+0

Wcale. Jeśli nadal nie działa, możesz mi odpowiedzieć. ^^ – FishGel

+0

OK, rozwiązanie Richarda nie działało w moim zasięgu. był viewcoped. Zmieniłem go na SessionScoped i działałem jak czar. –