2

我正在使用 Primefaces 开发一个 Web 应用程序,但有一个嵌套对象来表示我从数据库中获取的数据。

具体来说:我正在对许多列进行请求,返回许多行,所以我将这个结果存储在一个List<HashMap<String, Object>>(每个“字符串键”是具有关联“对象值”的列的名称)中。通常,我应该有一个List<MyObject>来保存我的数据,其中MyObject的属性与我的请求所具有的列一样多。但我做不到,因为我正在构建一个呈现我的请求结果的页面,并且可以在管理空间中动态管理列(因此您可以通过简单地选中/取消选中框来添加或删除管理空间中的列并验证您的更改。我被迫这样做List<HashMap<String, Object>>。)

p:dataTable中的Primefaces p:column有一个“ sortBy ”属性,但 Primefaces 似乎只支持对Object属性的排序(这就是为什么我说“以正常方式,我应该有一个来保存我的数据”) .List<MyObject>

实际上,我正在寻找可以替代#{myBean.list.attribute}sortBy ”的东西。(类似 EL#{myBean.list[?]['key']}或类似的东西)换句话说,我试图找到一种方法来强制 Primeface 对 List 中每个 Map 的每个值进行排序,值由我传递的键链接。

例如,我的请求返回给我一个歌曲列表,每首歌曲都以他的歌手、类型、日期、国家为特征。

所以我会有例如这个 List :

Map1(<Singer, SamTsui>
<Type, Pop>
<Date, 2010>
<Country, US>)

Map2(<Singer, Jo>
<Type, Blues>
<Date, 1988>
<Country, US>)

Map3(<Singer, DaftPunk>
<Type, Electro>
<Date, 2013>
<Country, FR>)

Map4(<Singer, Shinee>
<Type, Kpop>
<Date, 2009>
<Country, JP>)

如何对每首歌曲的 Singer 进行排序?还是日期?有没有办法做到这一点,或者我不得不在p:columnList<MyObject>上使用“ sortBy ”功能?

非常感谢,

PS:对“ filterBy ”有同样的问题,但我认为如果我们找到解决方案,解决这个问题的方法将是相似的。

PS2:我认为我们不需要代码,这只是一个一般性问题,因为每个尝试List<HashMap<?, ?>>使用 Primefaces 显示一个或嵌套对象并希望在此列表中添加过滤器/排序的人都可以提出这个问题。

4

0 回答 0