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

PrimeFaces ショーケースで解決策を見つけました。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>
于 2014-07-16T11:49:50.277 に答える
1

tabmenuのactiveIndex属性は、そのインデックスのタブをアクティブに設定します。Primefaces の tabmenu ショーケースでタブをクリックし、ソースの例を見続けると、まさにこれが起こっていることがわかります。各ページに異なる activeIndex を設定します。

于 2013-05-07T06:40:26.267 に答える
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 に答える
0

Menu.jsfFabricant.jsfという 2 つの .jsf ファイルがあるとします。

menuItem から 0 番目のインデックスを選択する次のスニペット コードをMenu.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> 

menuItem から 1 番目のインデックスを選択する次のスニペット コードをFabricant.jsfに挿入します。

   <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 に答える