2011-07-21 57 views
0

我正在構建我的第一個GWT應用程序,設計爲MVP模式。現在我有了一個視圖,它應該填充一個有很多字段的DTO(aprox。20)。我想讓它在這裏變得乾淨什麼是最簡潔/不那麼痛苦的方式將所有這些小部件/值傳遞給我的dto?GWT,MVP - 很多小部件,最佳實踐

爲每個DTO字段創建一個小部件並通過onClickHandler傳遞值?這將是很多鍋爐代碼,必須有另一種方式。有一個FormPanel,但在閱讀GWT郵件列表時,它只能用於文件上傳。

只是爲了完整性:我使用GWTP爲我的項目簡化了基本的MVP的東西。

感謝

+0

不知道你在找什麼(就像你問題仍然不是這樣:) :)如果你是在UI綁定使用UI綁定後,如果你是在解散(後端)綁定後看看GWT平臺框架更多成熟於GWT自己的MVP – Shahzeb

回答

2

如果您正在尋找數據綁定解決方案,則應該查看GWT's ui editors

從GWT文檔:

的GWT編輯器框架允許存儲在一個對象圖是 映射到編輯的圖形數據。典型的場景是將從RPC機制返回的對象 接線到UI中。

編輯器框架使用延遲綁定和命名約定的組合來減少鍋爐板代碼。該系統是高度可定製的,所以如果由於某種原因你不能遵循命名約定,你可以使用註釋來指定bean屬性的編輯器。

+0

就是這樣,我正在尋找這樣的事情。謝謝Tahir – onigunn

0

您查看界面應包含要顯示/編輯的每個屬性至少一種方法。例如,如果你的DTO有一個屬性「name」,那麼你的View接口應該包含這個屬性的一個方法。現在

interface ExampleView extends View { 

    // for a textbox 
    HasValue<String> getName(); 

    // for a label 
    HasText getName(); 

    // maybe a save button, for updating the dto and further actions 
    HasClickHandlers getSaveButton(); 
} 

您的演示者可以設置從DTO數據到您的視圖或文本框的情況下,你能夠從部件讀取更改後的值。

使用ValueChangeHandler可以實現從窗口小部件返回DTO的更新,該窗口綁定到HasValue接口,或者您的ViewImpl可以有一個Button,通知您的演示者更新DTO。

該解決方案導致更多代碼(樣板),但將模型從視圖中分離出來。

這裏的API文檔爲各種接口HasValue,HasTextHasClickHandlers

+0

我知道如何做到這一點我的問題指向了「問題」:如果我的DTO中有很多字段,我的視圖界面應該包含所有這些小部件。這對我來說似乎很混亂。 – onigunn

2

我幾乎所有的小部件都使用UiBinder。它鼓勵對錶示和邏輯進行適當的分離,並幫助保持跟蹤你的小部件。

0

想想實現解決方案的不同方法,然後詢問以下內容。

  • 具有最少的代碼行。
  • 具有最小的複雜性。如果任何ifs和大多數基本getter的東西比需要一個有很多條件代碼的方法要好得多。
  • 這是最簡單的閱讀。許多小砌塊比一個大砌塊要好。
  • 哪個最容易單獨測試。

最好的解決方案是您最容易閱讀,更改和測試的解決方案。