首页 > 解决方案 > Primefaces数据表排序和对齐

问题描述

我想从 Arraylist 动态构建网站页脚。我正在使用 primefaces 作为 UI。

下面的绿色图像是我想要使用 primefaces 的图像,到目前为止,我得到了如下图所示的数据表(蓝色和白色)。

这是我正在使用的 primefaces 代码。有人可以告诉我如何使用 primefaces 数据表或数据列表来构建像下面绿色图像一样的页脚。在 footer2List 中,我有“类别”作为标题(社交媒体、社区)和“描述”作为子数据。

提前致谢。

 <p:dataTable var="fot" value="#{footer2MB.footer2List}" sortBy="#{fot.category}">
    <p:columnGroup type="header">
        <p:row>
            <p:column colspan="2">
                <b><h:outputText value="#{fot.category}"/></b>
            </p:column>
        </p:row>                
    </p:columnGroup>

    <p:column headerText="fotId" colspan="7">
        <h:outputLink  target="_new#{fot.url}" value="#{request.contextPath}#{fot.url}">
        <h:outputText value = "#{fot.description}" />
         </h:outputLink>
    </p:column>
</p:dataTable>

这就是我所拥有的

这就是我想要的样子 在此处输入图像描述

标签: primefaces

解决方案


当您尝试(ab)为此使用数据表时,真的感觉就像您试图在方孔中放置一个圆钉。与使用两个嵌套ui:repeats的 .

您似乎在一张表中有父子关系。因此,如果您还没有这样做,请从建模您自己的 JPA 实体开始,就像在“具有相同类的父子的 JPA 映射”中所做的那样(如果您不使用 jpa,您需要编写一些代码,但这也相当简单直截了当)

编写检索顶级记录的JQLselect r from MyRecord r where parent_id is null:.

然后在伪代码中执行:

<ui:repeat value="#{myBean.rootRecords}" var="rootRecord">
    <h3>#{rootRecord.title}</h3>
    <ul>
    <ui:repeat value="#{rootRecord.children}" var="child">
        <li>#{child.title}</li>
    </ui:repeat>
    </ul>
</ui:repeat>

这是这里所做的事情:在 JSF 数据表中显示嵌套数组列表的值

您可以查看的一种优化是 JPA 中子项的延迟加载或急切加载。另一个是使用p:cache... Primefaces p:cache

一切都简单明了,没有数据表的麻烦。

(题外话:我几乎 100% 确定您已经花费了更多的时间来尝试(ab)使用数据表并创建问题并与我讨论,而不是如果您直接按照此答案中描述的方式进行操作,那么您将花费更多时间;-))


推荐阅读