0

<p:dataTable>用来显示我的文件的值。每个文件内部都有一个元数据列表。我想在文件的其他列旁边将每个元数据显示为自己的列。(我排除了其他列以使代码更具可读性)。

所以,我的问题是,<p:dataList>它不显示列。如果有人认为这是问题所在,则每个元数据中的元名称都是相同的。

我已经尝试使用<p:dataTable>而不是<p:dataList>,但由于我的客户最初希望将元数据显示为自己的列,这不是我的首选方式,但另一方面它正在工作。

<p:dataTable id="fileList" var="f" value="#{reader.files}" rendered="#{reader.showFileTable()}">
    <p:dataList value="#{f.meta}" var="meta1">
        <p:column>
           #{meta1.value}
        </p:column>
    </p:dataList>

    <p:column headerText="Metadaten">
        <p:dataTable value="#{f.meta}" var="meta">
            <p:column headerText="#{meta.name}">
                 #{meta.value}
            </p:column>
        </p:dataTable>
     </p:column>
</p:dataTable>

我非常感谢任何帮助,我如何使代码工作,以便每个metadate人在fileList-dataTable.

PS:我已经尝试过c:forEachui:repeat但也没有用。

PPS:我忘了提到,我的客户有时不想看到特定的元数据,所以如果可以使用建议的解决方案来做到这一点,那就太好了。

4

2 回答 2

1

您可以使用<p:columns>标签在 primefaces 中动态构建列,请参见vdl

查看primefaces 展示的示例

于 2013-04-28T10:15:38.820 回答
1

假设您有以下代码:

<p:dataList id="fileList" var="f" value="#{reader.files}">
    <p:dataTable value="#{f.listItems}" var="meta1">
        <p:column>#{meta1.value}</p:column>
        <p:columns value="#{meta1.listItems}">...</p:columns>
    </p:dataTable>
</p:dataList>

不会生成嵌套数据表中的动态列:似乎 p:columns 不能像“f”和“meta1”那样引用 var。我可以理解“meta1”不可见,因为它正在生成标题表,但我真的不明白为什么“f”当时不可见。

任何想法?谢谢。

于 2014-06-09T10:38:24.733 回答