サブメニューに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>
各メニュー項目が対応するタブをアクティブにするように、アクティブなタブを設定するにはどうすればよいですか?
これを実行したい場合。タブインデックスを変更するメソッドを呼び出す必要があるため、p:menuitem
でurl
を使用することはできません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>
次に、各メニュー項目が対応するタブをアクティブにします。