我正在构建我的第一个GWT应用程序,以MVP模式设计。现在我有一个视图应该填充一个有很多字段的DTO(aprox .20)。我想让它在这里清理干净将所有这些小部件/值传递给我的dto的最干净/最痛苦的方法是什么?
为每个DTO字段创建一个小部件并通过onClickHandler传递值?这将是很多锅炉代码,必须有另一种方式。有一个FormPanel,但在阅读GWT邮件列表时,它只应用于文件上传。
为了完整起见:我正在为我的项目使用GWTP,这简化了基本的MVP。
答案 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。
此解决方案会产生更多代码(样板文件),但会将模型与视图分开。
这里是各种界面HasValue,HasText和HasClickHandlers的API文档。
答案 3 :(得分:0)
考虑实现解决方案的不同方法,然后询问以下内容。
最好的解决方案是您最容易阅读,更改和测试的解决方案。