2011-04-27 54 views
1

我有一個顯示用戶帳戶詳細信息的視圖。相應的活動通過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()); 
    } 
    // (....) 
} 

當然,我想避免這種類型的編碼,但我沒有線索怎麼辦它以另一種方式。

在此先感謝您的任何提示。

回答

1

GWT Editor framework可以減少您需要編寫的粘合代碼的數量,以將數據模型和UI綁定在一起。有一種RequestFactoryEditorDriver類型,它在編輯器框架中添加了RequestFactory特有的功能。使用OptionalFieldEditor適配器將允許可空屬性來控制是否創建或放棄相應的窗口小部件。

+1

請給我一個例子如何使用OptionalFieldEditor,因爲我找不到任何好的示例? – 2011-04-28 15:10:56