2012-08-22 133 views
0

這裏,PropertyColumn排序一個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; 

和類用戶包括字符串用戶名,密碼,名字,姓氏,電子郵件,以及:

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有一個名字,每個用戶都有姓氏和名字。然而,並非每個Foo都有領導者,所以在上表中,領導者有幾個空/空值。當通過點擊列標題按照領導者排序表格時,沒有領導者的所有Foo都缺失。當按名稱重新排序時,他們返回,帶領空白。

有沒有辦法解決這個問題?空值總是最後排序的偏好是最好的,但我會帶走任何他們不會消失的東西。

回答

1

正確的排序是SortableDataProvider的責任。如果它讓物品消失,你應該修改它的邏輯。

+1

好的,但從技術上講,我的提供者調用我的DAO,這是DAO的錯。所以突然之間,這從一個Wicket問題變成了一個Hibernate問題,但我想到了這一點。無論如何,它看起來是固定的。那謝謝啦。 – cobaltduck

+0

@cobaltduck我有同樣的問題,你能否詳細說明你的解決方案。你做了什麼改變? – JJT

+0

@JJT - 請注意,這裏的日期是5.5歲,我不再被分配到這個項目,甚至不在同一家公司工作。我記得的是,wicket數據提供者調用了一些Hibernate DAO方法,該方法返回一個List ,並且DAO方法在所有情況下都不包括無引導序列的Foo。所以解決方案是修復*那個方法,而不是修理檢票的事情。 – cobaltduck