web-dev-qa-db-ja.com

Primefaces tabViewでアクティブなタブを設定するにはどうすればよいですか?

サブメニューに2つの項目があり、どちらも同じページを呼び出すメニューバーがあります。

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

そのページには、2つのタブがあるタブビューがあります。

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

各メニュー項目が対応するタブをアクティブにするように、アクティブなタブを設定するにはどうすればよいですか?

9

これを実行したい場合。タブインデックスを変更するメソッドを呼び出す必要があるため、p:menuitemurlを使用することはできませんbeforeprefil.xhtmlページにスキップします。 urlを使用する場合、prefil.xhtmlページにスキップした後、メソッドが呼び出されます。

まず、p:menuitemのアクションフィールドを使用できます。メソッドは、スキップするアドレスを返します。

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

これらの2つの方法は、次のように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>

次に、各メニュー項目が対応するタブをアクティブにします。

26
FishGel