挂毯网格默认排序

use*_*794 4 sorting grid tapestry

我想指定一个挂毯网格的默认排序列.

我知道我可以在服务器端对我的getter中的记录进行排序,但这似乎是不必要的努力,因为网格完全能够对它自己进行排序.

所以我的网格定义如下:

<t:grid source="queues" inPlace="true"> </t:grid>
Run Code Online (Sandbox Code Playgroud)

getQueues返回对象集合,如:

public class Queue {
    public String getName();
    public float getOccupancy();
}
Run Code Online (Sandbox Code Playgroud)

我希望默认情况下按照"占用"属性以后代顺序对网格进行排序.

从我看到的Tapestry文档中,Grid具有属性sortModel,它似乎是正确的选项.但是我找不到很好的解释,将它设置为正确的值.

lan*_*ava 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" />
Run Code Online (Sandbox Code Playgroud)