cobaltduck
cobaltduck

Reputation: 1598

Sorting a Wicket DataTable by a PropertyColumn that contains some null values

Here is some psuedo code for my table:

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);

The class Foo contains among other fields:

private String name;
private User leader;

And class User contains Strings userName, password, firstName, lastName, email, along with:

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

Every Foo has a name, and every User has has a first and last name. However, not every Foo has a leader, so in the table above, there are several null/ blank values for leader. When the table is sorted by leader by clicking the column header, all Foo's without a leader are missing. When sorted again by name, they return, with blanks for leader.

Is there anyway to fix this? A preference where nulls always sort last would be best, but I'll take anything where they don't just disappear.

Upvotes: 0

Views: 1322

Answers (1)

tetsuo
tetsuo

Reputation: 10896

The correct sorting is a responsibility of the SortableDataProvider. If it is making items disappear, you should revise it's logic.

Upvotes: 1

Related Questions