web-dev-qa-db-ja.com

<ui:repeat>を使用してネストされたリストを反復処理するにはどうすればよいですか?

JSF 2.0を使用して、各行にポップアップを開くリンクが含まれているテーブルを表示する必要があります。私には2つのモデルがあります:AおよびList<B>プロパティを持つidBおよびidプロパティを持つname。バッキングBeanには、List<A>プロパティがあります。私の見解では、<ui:repeat>を使用してList<A>を反復処理しています。

要件は、ユーザーがクリックした行に応じて、Aの対応するList<B>を表示する必要があることです。ただし、<ui:repeat>は、var属性に割り当てられるネストされたリストを受け入れません。したがって、効率的ではない多くの回避策を実行する必要があります。

この問題を効率的に解決するにはどうすればよいですか?

8
user2228591

必要なのは、外側の反復で別の<ui:repeat>タグをネストすることです。

<ui:repeat value="#{bean.listOfA}" var="a">
    ...
    <ui:repeat value="#{a.listOfB}" var="b">
        ...
    </ui:repeat>
</ui:repeat>

注目に値する唯一のことは、ネストされた<ui:repeat>タグは、Mojarra 2.1.15バージョンまで状態管理に問題があったことです(詳細は ネストされたui:repeat内で呼び出されないjsfリスナー および最近ではない多くの質問とその回答)では、アクションリスナーが呼び出されないなどの可能性がありますが、現在最新のMojarra JSF実装を使用している場合は、この部分を完全にスキップしてください。

15
skuntsel