我在p:dataTable的p:列中有一个p:menuButton。
到目前为止一切正常。
现在我想让menuButton动态化。但是c:在渲染表之前评估foreach,而primefaces不喜欢在p:menuButton中使用ui:repeat。
如何基于我循环的行项目上的集合动态创建一些p:menuitem,即我应该做什么而不是?:someKindOfLoop在下面的示例中?
<p:dataTable value='#{something.collection}' var='item'>
...
<p:column>
...
<p:menuButton value="Actions">
<p:menuitem value="View ..."
...>
<f:param name="something" value="#{item.id}"/>
</p:menuitem>
<?:someKindOfLoop x="#{item.subCollection}" y="var">
<p:menuitem value="View sub list "
...>
<f:param name="#{var.name}" value="#{var.id}"/>
</p:menuitem>
</?:someKindOfLoop>
</p:menuButton>
...
</p:column>
</p:dataTable>
谷歌搜索产生了许多类似的情况,但我还没有找到一个不是动态创建列(如:Why can <c:forEach> or <ui:repeat> not access <p:dataTable var>?)或不处理primefaces。
答案 0 :(得分:2)
与许多其他组件(包括大多数菜单组件)一样,PrimeFaces p:menuButton
支持模型属性。这在page 329 in the PF6 documentation上提到。此组件的“动态菜单”部分引用page 323上的“常用”动态菜单部分。在那里你可以阅读如何做到这一点。
并且为了防止此答案成为“仅限链接”(对于外部网站,此问题类似于此问题:Primefaces : how to create <p:menubar> dynamically in primefaces 4?