Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces 如何在TabMenu中更改activeindex_Primefaces - Fatal编程技术网

Primefaces 如何在TabMenu中更改activeindex

Primefaces 如何在TabMenu中更改activeindex,primefaces,Primefaces,我有一个关于primefacess的组件选项卡菜单的问题,特别是属性active index,即所选页面的索引。我想根据选择的页面进行更改,但它总是固定在首页上!这是我的代码: <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="h

我有一个关于primefacess的组件选项卡菜单的问题,特别是属性active index,即所选页面的索引。我想根据选择的页面进行更改,但它总是固定在首页上!这是我的代码:

<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">

选项卡菜单上的activeIndex属性将该索引上的选项卡设置为活动。如果您在primefaces选项卡菜单showcase中的选项卡周围单击,并继续查看源示例,您将看到这正是正在发生的事情。它们在每个页面上设置不同的activeIndex。

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

假设您有两个.jsf文件,即菜单.jsfFabricant.jsf

将以下代码片段放入菜单中。jsf将从菜单项中选择第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> 
   <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>

将以下代码片段放入将从菜单项中选择第一个索引的Fabricant.jsf

<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> 
   <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>


有关更多信息,请考虑您有两个.jsf文件,即Menu.jsfFabricant.jsf

将以下代码片段放入菜单中。jsf将从菜单项中选择第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> 
   <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>

将以下代码片段放入将从菜单项中选择第一个索引的Fabricant.jsf

<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> 
   <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>

有关详细信息


在我的豆子上{
整数指数;
接受者和接受者;
公共字符串重定向(int a){
如果(a==1){
指数=1;
返回“Home”或/“/Home.jsf
}
如果(a==2),则为else{
指数=2;
返回“制作者”;
}
}
它运行良好,感谢您的合作:)


在我的豆子上{
整数指数;
接受者和接受者;
公共字符串重定向(int a){
如果(a==1){
指数=1;
返回“Home”或/“/Home.jsf
}
如果(a==2),则为else{
指数=2;
返回“制作者”;
}
}

它运行良好,谢谢您的合作:)

我在使用选项卡菜单作为其他页面编辑的组件时遇到了相同的问题。我使用了上述建议进行以下修复:

组件(我们称之为myMenu.xhtml):


现在,在每一页中,我都有:

<ui:include src="../myMenu.xhtml">
    <ui:param name="parentIndex" value="XXX" />
</ui:include>


其中XXX是菜单中该页面的数字索引,从0开始。我不喜欢这样“硬编码”这些索引,但这是一个解决方案。

我在使用选项卡菜单作为其他页面的组件时遇到了相同的问题。
我使用上述建议进行以下修复:

组件(我们称之为myMenu.xhtml):


现在,在每一页中,我都有:

<ui:include src="../myMenu.xhtml">
    <ui:param name="parentIndex" value="XXX" />
</ui:include>


其中XXX是菜单中该页面的数字索引,从0开始。我不喜欢“硬编码”这些索引是这样的,但它是一个解决方案。

我在PrimeFaces showcase中找到了一个解决方案。您可以将请求参数添加到menuitem并将此参数附加到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>

...

我在PrimeFaces showcase中找到了一个解决方案。您可以将请求参数添加到menuitem中,并将此参数附加到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>

...

创建模板.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>

表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>

表1内容

我真的不明白你的问题。你什么时候尝试更改选项卡索引?当用户单击哪个页面时?单击选项卡应该会自动激活该选项卡。你不必做任何事情。如果你想在单击(或执行)其他操作时更改活动选项卡,你必须解释“其他操作”是什么意思是的。这让我感到不安,因为在网站中,tabmenu示例会自动更改,没有任何bean,但对我来说,他没有与我选择的菜单项同步。问题是什么,是因为模板吗???什么浏览器(以及哪个版本)你在使用吗?你看到任何javascript错误吗?没有,没有错误..但我不知道为什么当我选择一个菜单项时,它会返回页面,但没有更改ActiveIndex您是否尝试放置update=“@all”在每个菜单项中?我不太理解你的问题。你什么时候尝试更改选项卡索引?当用户单击哪个页面时?单击选项卡应自动激活该选项卡。你不必做任何事情。如果你想在单击(或执行)其他操作时更改活动选项卡,你必须解释这是什么“其他的东西”是。这让我感到不安,因为在网站primefaces中,tabmenu示例在没有任何bean的情况下会自动更改,但对我来说,他不会与我选择的菜单项同步