2011-06-28 39 views
7

私は両方とも同じページを呼び出す、サブメニュー上に2つの項目メニューバーを持っている:私は2つのタブを持つtabviewを持って、そのページで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> 

を:

私は設定することができますどのように
<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> 

アクティブなタブなので、各menuitemは対応するタブをアクティブにしますか?

答えて

24

あなたは私たちがprefil.xhtmlページへ飛び前のtabindex を変更するメソッドを呼び出す必要がありますので、this.Youが​​でurlを使用することはできませんやりたい場合。 urlを使用する場合は、prefil.xhtmlページにスキップした後にメソッドが呼び出されます。

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

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

<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属性を変更するために何かをする:

まず、あなたが​​のアクションフィールドを使用することができ、この方法は、あなたがにスキップしたいアドレスを返します。

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のスコープを悪用していませんでした。それは視野に入った。私はSessionScopedに変更し、魅力的に働いた。 –

関連する問題