有没有办法使用 tr:table
对显示在 UI 上的初始数据进行排序?我知道可以在 tr:column
上定义排序属性,这些属性用于对表中存在的数据进行排序。
但是这里的需求是在打开页面时默认对数据进行排序。除了从后端对表数据进行排序之外,还有其他方法吗?
最佳答案
默认情况下您无法对表格进行排序,但您必须以编程方式进行排序。通过一些工作,您可以编写一个可重用的 PhaseListener
您可以从 JSF 页面控制它。
确保只有handles a single phase (例如 PhaseId.RESTORE_VIEW
)并使用它来设置使用 setSortCriteria
的排序顺序:
List<SortCriterion> sortCriteria = new ArrayList<SortCriterion>(1);
String property = "myProperty";
boolean ascending = true;
sortCriteria.add(new SortCriterion(property, ascending));
myCoreTable.setSortCriteria(sortCriteria);
现在你只需要添加两个<f:attribute/>
s 在你的表上传递属性名称和升序 bool 值,这样你就可以为你的所有表创建一个可重用的监听器。
在你的<tr:document>
你可以有一个<f:attribute/>
包含要处理的表 ID 列表。
关于jsf - tr 的默认排序 :table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11258276/