如何在 Vaadin 8 中设置网格以按自定义比较器排序?

How do you setup a Grid in Vaadin 8 to sort by a custom comparator?

例如,我的网格由 People 组成,因此我有:

public class People
{
    int id;
    String name;
}

我的网格是这样的:

grid.addColumn(People::getName).setId("Name");

现在我知道我可以做到:

grid.sort("Name", SortDirection.ASCENDING);

问题是如果我有两个同名的人怎么办,比如约翰。在这种情况下,我想先按 name 排序,然后再按 id 排序。 id 不是网格中的列,它只是 People class 的 属性。

虽然这个例子过于简单,但我确实包含了额外的信息,所以重要的是我能够按真实的人而不是名字来排序。在我的例子中,网格是一份报告,人名只是众多字段之一。

我最终这样做的方式是:

Grid<Car> grid = new Grid<Car>();
grid.addColumn(Car::getPerson).setComparator((car1, car2) -> 
{
    // ignoring any null checks for getPerson() as they can be null.
    return car1.getPerson().compareTo(car2.getPerson());               
});