GWT,MVP - 许多小部件,最佳实践

时间:2011-07-21 21:03:43

标签: java gwt dto

我正在构建我的第一个GWT应用程序,以MVP模式设计。现在我有一个视图应该填充一个有很多字段的DTO(aprox .20)。我想让它在这里清理干净将所有这些小部件/值传递给我的dto的最干净/最痛苦的方法是什么?

为每个DTO字段创建一个小部件并通过onClickHandler传递值?这将是很多锅炉代码,必须有另一种方式。有一个FormPanel,但在阅读GWT邮件列表时,它只应用于文件上传。

为了完整起见:我正在为我的项目使用GWTP,这简化了基本的MVP。

4 个答案:

答案 0 :(得分:2)

如果您正在寻找数据绑定解决方案,请查看GWT's ui editors

来自GWT文件:

  

GWT编辑器框架允许存储在对象图中的数据   映射到编辑器图表。典型的场景是布线对象   从RPC机制返回到UI。

编辑器框架使用延迟绑定和命名约定的组合来减少锅炉板代码。系统是高度可定制的,因此您可以使用注释为bean属性指定编辑器,如果由于某种原因您不能遵循命名约定。

答案 1 :(得分:2)

我几乎为所有小部件使用UiBinder。它鼓励正确分离表示和逻辑,并有助于跟踪您的小部件。

答案 2 :(得分:0)

您的View界面应至少包含一个要显示/编辑的属性的方法。因此,例如,如果您的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设置到您的视图中,或者在文本框中,您可以从小部件中读取更改后的值。

可以使用绑定到HasValue接口的ValueChangeHandler来实现从小部件更新DTO,或者您的ViewImpl可以有一个按钮,通知您的演示者更新DTO。

此解决方案会产生更多代码(样板文件),但会将模型与视图分开。

这里是各种界面HasValueHasTextHasClickHandlers的API文档。

答案 3 :(得分:0)

考虑实现解决方案的不同方法,然后询问以下内容。

  • 代码最少。
  • 具有最小的cylomatic复杂性。几乎没有ifs和大多数基本getter的东西比需要一个有很多条件代码的方法要好得多。
  • 哪个是最简单的。很多小积木比一个大积木好。
  • 最容易单独测试。

最好的解决方案是您最容易阅读,更改和测试的解决方案。