我有一个关于primefacess的组件Tabmenu的问题,特别是属性活动索引,即所选页面的索引。我想根据选择的页面进行更改,但它始终固定在首页上!这是我的代码:
<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 rendered="true" widgetVar="index">
<p:menuitem value="Home" url="Menu.jsf" icon="ui-icon-star"/>
<p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" oncomplete="index.select(1)"/>
<p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search" oncomplete="index.select(2)"/>
<p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document" oncomplete="index.select(3)"/>
</p:tabMenu>
</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" update="@all"/>
<p:menuitem value="Fabricants" url="/pagess/pagesFabricant/Fabricant.jsf" icon="ui-icon-wrench" update="@all" />
<p:menuitem value="Composants" url="/pagess/pagesComposant/Composant.jsf" icon="ui-icon-search" update="@all"/>
<p:menuitem value="Dossier d'equivalence" url="DEQ.jsf" icon="ui-icon-document" update="@all"/>
</p:tabMenu>
</ui:composition>
答案 0 :(得分:1)
tabmenu上的 activeIndex 属性设置该索引上的选项卡处于活动状态。如果你点击primefaces tabmenu展示的标签并继续查看源代码示例,你会发现这正是发生的事情。他们在每个页面上设置了不同的activeIndex。
答案 1 :(得分:1)
我在PrimeFaces展示中找到了一个解决方案。您可以向menuitem添加请求参数,并将此参数附加到您的网址。因此,不需要支持bean来保持活动索引:
<p:tabMenu activeIndex="#{param.i}">
<p:menuitem value="Home" icon="ui-icon-home" url="page1.xhtml?i=0">
<f:param name="i" value="0" />
</p:menuitem>
<p:menuitem value="Search" icon="ui-icon-search" url="page2.xhtml?i=1">
<f:param name="i" value="1" />
</p:menuitem>
...
</p:tabMenu>
答案 2 :(得分:1)
创建template.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<p:tabMenu activeIndex="#{activeIndex}">
<p:menuitem
value="tab1"
url="/tab1.jsf">
</p:menuitem>
<p:menuitem
value="tab2"
url="/tab2.jsf">
</p:menuitem>
</p:tabMenu>
<h:panelGroup id="mainPanel" style="width:100%">
<ui:insert name="page">Page Content</ui:insert>
</h:panelGroup>
</ui:composition>
在标签页中设置参数
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="template.xhtml">
<ui:param name="activeIndex" value="1" />
<ui:define name="page">
tab1 content
</ui:define>
</ui:composition>
答案 3 :(得分:0)
考虑您有两个.jsf文件,即 Menu.jsf 和 Fabricant.jsf
将以下代码段放在 Menu.jsf 中,从menuItem中选择第0个索引
<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:tabMenu>
将以下代码段放在 Fabricant.jsf 中,从menuItem中选择第一个索引
<p:tabMenu activeIndex="1" >
<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:tabMenu>
了解更多信息click here
答案 4 :(得分:0)
<p:tabMenu rendered="true" widgetVar="#{bean.index}">
<p:menuitem value="Home" action="#{bean.redirect(1)}"/>
<p:menuitem value="Fabricants" action="#{baen.redirect(2)}"/>
</p:tabMenu>
on my bean {
int index;
getter and setter;
public String redirect(int a){
if (a==1){
index=1;
return "Home" or // "/home.jsf
}
else if (a==2){
index =2;
return "Fabricant";
}
}
它可以很好地为你的合作而努力:)
答案 5 :(得分:0)
使用标签菜单作为其他网页<ui:include>
编辑的组件时,我遇到了同样的问题。我使用上面的建议进行了以下修复:
组件(让我们称之为myMenu.xhtml):
<p:tabMenu id="myMenuBar" activeIndex="#{parentIndex}">
<p:menuitem value="Page One" action="#{PageOneBacker.mainNavigation}" />
<p:menuitem value="Page Two" action="#{PageTwoBacker.mainNavigation}" />
<p:menuitem value="Page Three" action="#{PageThreeBacker.mainNavigation}" />
</p:tabMenu>
现在每页都有:
<ui:include src="../myMenu.xhtml">
<ui:param name="parentIndex" value="XXX" />
</ui:include>
其中XXX是菜单中该页面的数字索引,从0开始。我不会百分之百地对#34;硬编码&#34;这些索引就像这样,但它是一个解决方案。