2012-03-06 28 views
3

私は先週PrimeFaces 3.1.1を使用しています。これは優れたビジュアルコンポーネントフレームワークのようです。私はRichfacesからの移行を行い、PrimeとJSF2(2.1.6バージョン)だけですべてを動かそうとしています。primefacesの動的ツールバーを作成する方法

私の問題には、実装する必要がある動的なツールバーが付属しています。操作のいくつかはツールバー(commandButtons)に直接統合され、他の操作には内部にいくつかのサブ操作があるため、操作名を持つmenuButtonを実行し、メニュー項目のようにすべての操作をここに追加する必要があります。ここに私のコードは次のとおりです。私の問題は、私は唯一の第一の動作コンポーネントを取得していますです

<h:panelGroup id="Texto_Header" layout="block"> 
     <h:form> 
      <p:toolbar> 
       <p:toolbarGroup> 
        <!-- Operaciones de aplicación --> 
        <ui:repeat value="#{logedBean._apps}" var="opBean"> 
          <!-- OPERACION PRINCIPAL EJECUTABLE --> 
          <h:panelGroup rendered="#{opBean._Clickable}"> 
           <p:commandButton ajax="true" value="#{opBean._Nombre}" 
            action="#{opBean.actionOperationClick}" /> 
          </h:panelGroup> 
          <!-- OPERACION PRINCIPAL CON SUBOPERACIONES --> 
          <h:panelGroup rendered="#{!opBean._Clickable}"> 
           <p:menuButton value="#{opBean._Nombre}"> 
            <ui:repeat value="#{opBean._subOperaciones}" var="opBean2"> 
             <p:menuitem ajax="true" value="#{opBean2._Nombre}" 
              actionListener="#{opBean2.actionOperationClick}" /> 
            </ui:repeat> 
           </p:menuButton> 
          </h:panelGroup> 
        </ui:repeat> 
       </p:toolbarGroup> 
      </p:toolbar> 
     </h:form> 
    </h:panelGroup> 

、それは正確にコマンドボタンをレンダリングし、彼らの行動は、しかし#」の場合には、うまく機能している{opBean._Clickable!} 「私は名前を持つmenuButtonを取得しますが、内部にはmenuitemはありません。埋め込まれたui:繰り返しの繰り返しがうまくいっていないように見えます。

私はC使用して同じチャンスを試してみました:foreachのCを:Cを選択します。それ以外の場合はタグと、この場合、私は視覚的によくやったメニューを取得し、のcommandButtonアクションがあまりにもうまく機能しますが、時にされています私はopBean2が認識されないというitemItemをクリックします...しかし、私が前に言ったように、私はJSFタグを排他的に使用することを好みます。それを行う方法はありますか?

+0

、logedBean._appsとopBean._subOperaciones両方がコレクションされています。 –

答えて

4

最終的にjsp反復タグで動作し、アクション属性のmenuitemタグのactionListener属性を変更することができました。それはPrimefaces Toolbarは、ページのレンダリング中に構築するために、バッキングBeanに統合されるように特定のモデルを持っていないため、JSPタグである必要があり

<h:panelGroup id="Texto_Header"> 
    <h:form> 
     <p:toolbar> 
      <p:toolbarGroup> 
       <!-- Operaciones de aplicación --> 
       <c:forEach items="#{logedBean._apps}" var="opBean"> 
        <!-- MAIN OPERATION --> 
        <h:panelGroup rendered="#{opBean._Clickable}"> 
         <p:commandButton value="#{opBean._Nombre}" 
          action="#{opBean.actionOperationClick}" update=":linkPanel" /> 
        </h:panelGroup> 
        <!-- OPERATION WITH SUBOPERATIONS --> 
        <h:panelGroup rendered="#{!opBean._Clickable}"> 
         <p:menuButton value="#{opBean._Nombre}"> 
          <c:forEach items="#{opBean._subOperaciones}" var="opBean2"> 
           <p:menuitem value="#{opBean2._Nombre}" 
            action="#{opBean2.actionOperationClick}" update=":linkPanel" /> 
          </c:forEach> 
         </p:menuButton> 
        </h:panelGroup> 
       </c:forEach> 
      </p:toolbarGroup> 
     </p:toolbar> 
    </h:form> 
</h:panelGroup> 

編集:ここに私のコードです。だからそれはページビルドでなければならない。 Primefaces TabViewでも同様のことが起こっていましたが、それを解決してタブビューに組み込みのイテレータが追加されました。関連する感染症を見てみましょう。

https://stackoverflow.com/a/4057370/1199132

EDITED 2

新PF MenuModelは全くこの種の問題を解決しているようです。 Beanでメニューをプログラムで構築することができます。 4.0から利用可能です。ところで

http://blog.primefaces.org/?p=2594

+0

'この記事を回答としてマークするのを忘れないでください –

0

これはネストされたui:repeat要素に関連していると思います。私も前に似たような問題に遭遇しました。それを入れ子にして、ui:repeatを正しく動作させる方法を理解していませんでした。

現在、この問題でRichfaces a4j:repeatを使用しています。 a4j要素を持つPrimefacesのUIコンポーネントを使用する事例は見ていません。

関連する問題