0

我有一个关于 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>  
4

6 回答 6

1

tabmenu 上的activeIndex属性将该索引上的选项卡设置为活动状态。如果您单击 primefaces 选项卡展示中的选项卡并继续查看源示例,您会发现这正是正在发生的事情。他们在每个页面上设置不同的 activeIndex。

于 2013-05-07T06:40:26.267 回答
1

我在 PrimeFaces 展示中找到了解决方案。您可以将请求参数添加到菜单项并将此参数附加到您的 url。所以不需要支持 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>
于 2014-07-16T11:49:50.277 回答
1

创建模板.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>
于 2016-03-08T07:58:49.407 回答
0

假设您有两个 .jsf 文件,即Menu.jsfFabricant.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>

欲了解更多信息,请单击此处

于 2013-05-07T07:09:35.300 回答
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";
}
}

一切都很好,谢谢您的合作:)

于 2013-05-07T09:34:33.887 回答
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 开始。我不是 100% 乐意像这样“硬编码”这些索引,但这是一个解决方案。

于 2014-03-14T14:28:15.327 回答