2

我正在使用p:tabMenu组件。我有 4 个菜单项,每个菜单项都重定向到不同的 jsf 页面,但问题是该页面在没有更改的情况下返回,activeindex并且activeindex初始值为 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>

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

4

3 回答 3

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> 
于 2013-04-18T09:49:48.860 回答
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>
于 2013-04-30T13:20:09.773 回答
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 中的参数设置 activeindex :)

于 2013-04-30T13:55:10.330 回答