Jsf 2 如何在可排序数据表中按JSF标签排序

Jsf 2 如何在可排序数据表中按JSF标签排序,jsf-2,primefaces,jpa-2.0,Jsf 2,Primefaces,Jpa 2.0,我正在为列中的值显示一个(特定于语言的)标签。该列是可排序的,JSF标签与数据库值不同。我正在使用带分页的primefaces数据表 如何按标签而不是数据库值排序?是否有任何类型的翻译可以让我的JPA标准知道不同的值 在内存中排序不是一个选项,因为数据集可能很大,我只想显示一个子集(分页大小为每页10个项目)我认为不可能实现您想要的 除非数据库知道值是什么,否则无法对其进行排序。您可以在从数据库加载后转换标签并进行排序,但由于资源限制,您不希望在内存中进行排序 最好的解决方案是在数据库中实现本地

我正在为列中的值显示一个(特定于语言的)标签。该列是可排序的,JSF标签与数据库值不同。我正在使用带分页的primefaces数据表

如何按标签而不是数据库值排序?是否有任何类型的翻译可以让我的JPA标准知道不同的值


在内存中排序不是一个选项,因为数据集可能很大,我只想显示一个子集(分页大小为每页10个项目)

我认为不可能实现您想要的

除非数据库知道值是什么,否则无法对其进行排序。您可以在从数据库加载后转换标签并进行排序,但由于资源限制,您不希望在内存中进行排序


最好的解决方案是在数据库中实现本地化解决方案。然后,数据库可以查找每个标签的翻译并应用排序。我个人认为这是本地化任何应用程序的方法,因为它允许最终用户轻松翻译。您甚至可以编写Java资源包提供程序来进行db查找,而不是引用文件系统包。

这里有一个lazyload示例:


您可以按照该链接中的方法编写自定义排序。

您不能使用
sortBy=“{myRow.mylabel}”
属性
谢谢您的建议,我已经尝试过了。但是标签不存储在数据库中,这是进行排序的地方(在生成的语句中)。所以关键是:数据库不知道用户看到的标签。但是,用户对错误的排序行为感到疑惑,所以请将此标签放入表示表中行的对象,不是吗?这不符合JSF的I18N国际化机制,并且属性值的标签不应硬编码在对象中,因为标签仅用于GUI。如果在另一个GUI中使用相同的数据模型,会发生什么情况?您应该将服务器端的标签从用户使用的属性文件中转换过来JSF。。。使用ResourceBundle.getBundle(“some.package.resources.YourTexts”,yourLocale)…您是否可以将文章中的一些代码复制到您的答案中?否则,如果链接消失,你的答案对将来的任何人都没有用处。