如何在jsf dataTable中创建动态p:menuButton?

时间:2016-11-11 09:58:11

标签: jsf primefaces datatable facelets

我在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。

1 个答案:

答案 0 :(得分:2)

与许多其他组件(包括大多数菜单组件)一样,PrimeFaces p:menuButton支持模型属性。这在page 329 in the PF6 documentation上提到。此组件的“动态菜单”部分引用page 323上的“常用”动态菜单部分。在那里你可以阅读如何做到这一点。

并且为了防止此答案成为“仅限链接”(对于外部网站,此问题类似于此问题:Primefaces : how to create <p:menubar> dynamically in primefaces 4?