如何在Primefaces数据表中表示嵌套数据?
这是我的模型:
User.java
public class User { //... public List getFriends() { // ... } }
我想构建一个用户朋友的表格,如下所示:
users.jsf
+ ---------- + ------------ + | 用户| 朋友们| + ---------- + ------------ + | | 爱丽丝| | + ------------ + | ADAM | BOB | | + ------------ + | | PITT | + ---------- + ------------ + | | | ....
由于有许多用户,因此无法一次性转储用户表。
在这种情况下,数据表组件是理想的,因为它具有内置的分页支持。 它也是理想的,因为它可以对列进行排序……
不幸的是,我无法通过Primefaces示例找到更改用户列中的rowspan的方法。
我该如何构建这个数据表?
其他一些OP有类似的问题:
- Primefaces / JSF嵌套数据表
- 如何在同一行中包含一个包含Primefaces的子表的dataTable? 我在做什么?
- 使用rowspan来表示dataTable
- …加你的?
编辑
这是我提出的最终解决方案 。
只需在列中使用另一个数据表:)
这是它在我的localhost上的样子
另一种选择是在列中使用ui:repeat
来获取集合的所有值。
例:
...
Primefaces 可扩展行应该满足您的需求,只有您需要使用子行组件获得创意。 您可以使用主要面数据列表组件作为子行组件。 它看起来像:
#{friend.firstName}
对我来说有两种解决方案:
1-如果我想按用户浏览用户并检索朋友列表,在这种情况下我更喜欢dataList 。
#{u.name} #{f.name}
2-在我可以直接处理朋友列表 (listFreinds [userName,friend])或我正在使用JPQL查询的情况下 :
#{u.userName} #{u.friend}
第二种情况是自v6.0.11起使用Primefaces Row Grouping的新本机解决方案
https://www.primefaces.org/showcase/ui/data/datatable/rowGroup.xhtml
根据@Kerem的回答,这是我提出的解决方案:
为了使嵌套的数据像自己的主数据表行,我已经覆盖了CSS类.ui-dt-c
。 签入h:head
查看style
标记以获取详细信息。
USERS and their friends #{u.name} #{f.name}