10

我有一个菜单栏,其中子菜单上有两个项目,都调用同一个页面:

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

如何设置活动选项卡,以便每个菜单项激活相应的选项卡?

4

1 回答 1

25

如果你想这样做。你不能在中使用url,因为我们必须在跳到页面之前p:menuitem调用一个方法来更改 tabindex 。如果使用,我们跳转到页面后会调用该方法。prefil.xhtmlurlprefil.xhtml

首先,你可以使用 的action 字段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> 

这两种方法可以像这样改变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>

然后每个菜单项将激活相应的选项卡。

于 2011-06-29T05:48:21.537 回答