GWT,MVP - 许多小部件,最佳实践[关闭]

问题描述 投票:1回答:4

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

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

只是为了完整性:我正在为我的项目使用GWTP,这简化了基本的MVP内容。

java gwt dto
4个回答
2
投票

如果您正在寻找数据绑定解决方案,那么您应该查看GWT的ui编辑器

来自GWT文件:

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

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


2
投票

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


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可以有一个Button,通知您的演示者更新DTO。

此解决方案导致更多代码(样板),但将模型与视图分开。

这里是各种接口HasValueHasTextHasClickHandlers的API文档。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.