私は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 つのサブメニューでのみ機能します。