我想指定一个挂毯网格的默认排序列。
我知道我可以在服务器端对我的getter中的记录进行排序,但这似乎是不必要的努力,因为网格完全能够对它自己进行排序。
所以我的网格定义如下:
<t:grid source="queues" inPlace="true"> </t:grid>
getQueues返回对象集合,如:
public class Queue {
public String getName();
public float getOccupancy();
}
我想按照“占用”排序网格。默认情况下属于后代顺序。
从我看到的Tapestry文档中,Grid具有属性 sortModel ,这似乎是正确的选项。但是,我无法找到正确的值来设置它的正确解释。
答案 0 :(得分:5)
您可以编写一个mixin来设置初始排序
@MixinAfter
public class DefaultSort {
public enum Order { ASCENDING, DESCENDING };
@Parameter(required=true, defaultPrefix="literal")
private String sort;
@Parameter(defaultPrefix="literal", value="literal:ascending")
private Order order;
@InjectContainer
private Grid grid;
@SetupRender
void setupRender() {
GridSortModel sortModel = grid.getSortModel();
if (sortModel.getSortConstraints().isEmpty()) {
sortModel.updateSort(sort);
if (order == Order.DESCENDING) {
// updateSort a second time for DESCENDING
sortModel.updateSort(sort);
}
}
}
}
<t:grid source="queues" inPlace="true" t:mixins="defaultsort" sort="occupancy" />