PrimeFaces tabmenu不改变索引

时间:2013-04-18 07:51:36

标签: jsf primefaces

我正在使用p:tabMenu组件。我有4个菜单项,每个都重定向到一个不同的jsf页面,但问题是返回的页面没有更改activeindexactiveindex保持不变,初始值为0。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
<p:tabMenu activeIndex="0">
    <p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star"/>  
    <p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" />  
    <p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search"/>  
    <p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document"/>  
</p:tabMenu> 

</ui:composition>

如果知道应该自动更改,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您可以使用EL在托管bean级别设置它。所以喜欢这个

<p:tabMenu activeIndex="#{myBean.myActiveIndex}">
    <p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star" action="#{myBean.setActiveIndex(0)}"/>  
    <p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" action="#{myBean.setActiveIndex(1)}" icon="ui-icon-wrench" />  
</p:tabMenu> 

答案 1 :(得分:1)

我用javascript解决方法解决了activeIndex问题。我创建了一个inputHidden,当我有一个onclick事件时,我改变了它的值。

我有一个tabBean托管bean,可以创建我的菜单和存储activeIndex:

@SessionScope
@ManagedBean(name="tabBean") 
public class TabBean{

private int activeIndex;

 public IMenu getMenu(){
  IMenuModel simpleMenuModel = new DefaultMenuModel();

  MenuItem mi = new MenuItem();
  mi.setValue("Home");
  mi.setIcon("ui-icon-home");
  mi.setActionExpression(UITools.ExternalContext.getMethodValue("home", new Class[]{}));
  mi.setAjax(false);
  simpleMenuModel.addMenuItem(mi);
  ...
  return menu;
 }
}

在我的xhtml页面中我有:

<script>
  function setCurrentIndex(index){
    var activeIndexName = PrimeFaces.escapeClientId('tabForm:activeIndex_hidden');
    var component = $(activeIndexName);
    component.val(index);
  }
</script>
<p:outputPanel id="menuPanel" layout="block"> 
   <h:form id="tabForm"> 
     <p:tabMenu  id="tabMenu" model="#{tabBean.menu}" activeIndex="#{tabBean.activeIndex}" />  
     <h:inputHidden id="activeIndex_hidden" value="{tabBean.activeIndex}"/> 
   </h:form>    
</p:outputPanel>

答案 2 :(得分:0)

<p:tabMenu activeIndex="#{loginBean.activeindex}">  
    <p:menuitem value="Accueil"  icon="ui-icon-star" action="#{loginBean.Dirige(0)}" />
    <p:menuitem value="Fabricants"  icon="ui-icon-wrench"  action="#{loginBean.Dirige(1)}" /> 
    <p:menuitem value="Composants" icon="ui-icon-search"  action="#{loginBean.Dirige(2)}"/> 
    <p:menuitem value="Dossier d'equivalence"  icon="ui-icon-document"  action="#{loginBean.Dirige(3)}"/> 
</p:tabMenu>  

并使用Dirige中的参数设置活动索引:)