我正在使用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>
如果知道应该自动更改,我该如何解决这个问题?
答案 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中的参数设置活动索引:)