通过包含一些空值的PropertyColumn对Wicket DataTable进行排序

时间:2012-08-22 21:05:17

标签: sorting datatable null wicket

这是我的表的一些伪代码:

List<IColumn<Foo>> columns = new ArrayList<IColumn<Foo>>();
columns.add(new PropertyColumn<Foo>(Model.of("Name"), "name", "name"));
columns.add(new PropertyColumn<Foo>(Model.of("Leader"), "leader.lastName",
   leader.fullName"));

fooTable = new AjaxFallbackDefaultDataTable<Foo>("fooTable", columns,
   provider, 10);

Foo类包含其他字段:

private String name;
private User leader;

类User包含字符串userName,password,firstName,lastName,email,以及:

public String getFullName() {
    // Use blank strings in place of "null" literals
    String f = firstName != null ? firstName: "";
    String l = lastName != null ? lastName: "";
    return (l + ", " + f);
}

每个Foo都有一个名字,每个用户都有名字和姓氏。但是,并非每个Foo都有一个领导者,因此在上表中,领导者有几个空/空值。当通过单击列标题按照领导者对表进行排序时,所有没有领导者的Foo都会丢失。当按名称再次排序时,它们将返回,并为领导者填空。

有没有解决这个问题?一个偏好,其中null总是排在最后,这将是最好的,但我会采取任何他们不会消失的地方。

1 个答案:

答案 0 :(得分:1)

正确的排序是SortableDataProvider的责任。如果它使项目消失,你应该修改它的逻辑。