使用JSF 2.0,我需要显示一个表,其中每行包含一个打开弹出窗口的链接。我有两个模型:具有id
和List<B>
性质的A
和具有id
和name
性质的B
。在我的后台,我有一个List<A>
属性。在我看来,我使用<ui:repeat>
来迭代List<A>
。
要求是,根据用户单击的行,需要显示A
对应的List<B>
。然而,<ui:repeat>
不接受在var
属性中分配的嵌套列表。因此,我需要做很多没有效率的工作。
我如何有效地解决这个问题?
您需要的是在外部迭代中嵌套另一个<ui:repeat>
标记:
<ui:repeat value="#{bean.listOfA}" var="a">
...
<ui:repeat value="#{a.listOfB}" var="b">
...
</ui:repeat>
</ui:repeat>
唯一值得注意的是,在Mojarra 2.1.15版本之前,嵌套的<ui:repeat>
标签在状态管理方面存在问题(详细信息请参阅嵌套ui中未调用的jsf侦听器以及许多不太新的问题及其答案),这可能导致未调用动作侦听器等,但如果您目前使用的是最新的Mojarra jsf实现-请跳过这一部分。