Java + Primefaces:将“sortBy”属性与嵌套映射一起使用

时间:2013-11-13 13:15:04

标签: java jsf-2 primefaces

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

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

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

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

例如,我的请求会返回一个歌曲列表,每首歌的特点是他的歌手,类型,日期,国家。

所以我将举例说明这个名单:

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>)

如何对每首歌的歌手进行排序?还是日期? 有没有办法做到这一点,或者我被迫List<MyObject>使用 p:列上的“ sortBy ”功能?

非常感谢,

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

PS2:我认为我们不需要代码,这只是一个普遍的问题,因为可以询问每个人试图用Primefaces显示List<HashMap<?, ?>>或嵌套对象,并想要添加过滤器/在此列表中排序。

0 个答案:

没有答案