我有一個顯示用戶帳戶詳細信息的視圖。相應的活動通過GWT請求工廠請求服務器端代碼(以檢索用戶帳戶對象)。視圖界面擴展了TakesValue < T>界面,所以我的ViewImpl < UserAccountProxy>實現了setValue(UserAccountProxy)方法。 按照預期,此方法用於設置對當前將顯示的對象的引用。GWT:處理視圖中的空請求工廠代理引用
UserAccountProxy有很多屬性,因此它的代理引用了許多其他代理對象。因此,例如我們可以在UserAccountProxy中封裝UserNameProxy,UserPasswordProxy,UserRolesProxy等。 在某些情況下,幾乎所有這些代理都可能爲空(用戶沒有指定角色,用戶沒有頭像,沒有指定簽名...)。 另外,相應的活動可能不會向請求工廠請求屬性的某些部分,並且這些屬性也是空的。
如果這些屬性(代理)中的任何一個不爲空,則應該使用適當的小部件在視圖中顯示它們。
最簡單的,也是最醜陋的做法,以避免NullPointerException異常是以下幾點:
public void setValue(UserAccountProxy account) {
//getUserName() returns proxy which may be null
if (account.getUserName() != null) {
setUserNameWidget(account.getUserName());
}
//getUserPassword() returns proxy which may be null
if (account.getUserPassword() != null) {
setUserPasswordWidget(account.getUserPassword());
}
// (....)
}
當然,我想避免這種類型的編碼,但我沒有線索怎麼辦它以另一種方式。
在此先感謝您的任何提示。
請給我一個例子如何使用OptionalFieldEditor,因爲我找不到任何好的示例? – 2011-04-28 15:10:56