0

私は2つのui:repeatを次のようにネストしています:

<ui:repeat var="father" value="#{miuchile3.getMenusPadre(miuchile3.keyModulo)}" >
             <li>

                 <h:commandLink value="#{father.nombre}"  action="#{miuchile3.setMenu(father)}">
                 <f:ajax render=":menupags:menuDetalle" />
                 </h:commandLink>


                 <ul>
                     <ui:repeat var="submenu" value="#{miuchile3.getHijos(father.id)}" >
                         <li><h:commandLink value="#{submenu.nombre}" actionListener="#{miuchile3.setMenu(submenu)}">
                            <f:ajax  render=":menupags:menuDetalle" />
                         </h:commandLink></li>
                     </ui:repeat>


                 </ul>


               </li>



              </ui:repeat>

これは、この形式のメニューを生成します

  • お父さんメニュー1

    • 息子メニュー_1
    • 息子メニュー_2

  • お父さんメニュー2

    • 息子メニュー2_1
    • 息子メニュー2_2
    • 息子メニュー2_3

等..

このサブメニューをクリックすると、f:ajax を使用して、選択したメニューの詳細を含むパネルグループをレンダリングします (それらに関連付けられたページが表示されます)。問題は、親メニュー 1 とそのサブメニューに対してのみ適切に機能することです。メニュー 2 では、最初の 2 つのサブメニューは問題なく動作します。「親メニュー 2」に関連付けられた 3 番目のサブメニューがあり、それをクリックしても何もしません。

入れ子になった ui:repeat の問題なのか、f:ajax の問題なのかわかりませんが、2 回目の繰り返しの後、ui:repeat が適切に機能しなくなると思います..「setMenu()」関数 (入れ子になったui:repeat) 何らかの理由で動作を停止します。しかし、それはf:ajaxでもあるかもしれません..私は本当に知りません。

編集:

今、私は問題を見つけましたが、まだ解決する方法がわかりません。

問題は、最初の反復 (最初のメニューとそのサブメニュー) ではアクション「setMenu()」で呼び出しているメソッドが正常に機能することですが、2 回目の反復 (親メニュー 2 とそのサブメニュー) では setMenu() メソッドがサブメニューが 2 つ以上ある場合、アクション (setMenu()) で呼び出すメソッドは 2 回だけ呼び出されます。最初の繰り返しの後、2 つのサブメニューでのみ機能します。

4

1 に答える 1

1

データテーブルのui:repeatを変更しましたが、希望どおりに機能しました。内部で何らかのアクションを呼び出す必要がある場合は、ネストされたui:repeatを使用することをお勧めしません。奇妙な動作をします。

于 2013-02-20T14:47:11.570 に答える