我是 GWT 的新手,在视图实现方面存在问题……我使用 MVP 和 SmartGWT。我将通过定义我如何解决我的 MVP 以及它的奇怪之处来揭示这一点。
在我的 onModule 中,我定义了使用 UIbinder 构建的类。我已经声明了一个 LayoutPanel 并在类的构造函数中像这样设置它。
layoutPanel = binder.createAndBindUi(this);
我在这个类中有容器:
public void setBodyLayout() {
panel.setWidgetLeftWidth(menuPanel, xx, PCT, xxx, PCT);
panel.setWidgetRightWidth(bodyPanel, xx, PCT, xx, PCT);
}
menuPanel 和 bodyPanel 都是上面类中声明的 simplePanel(UIfield 与 UIbinder 一起使用)。在 LayoutPanel 中有。对于我的 ActivityMapper 的方法显示,我有这个方法(实际上我有两个 ActivityMapper,两个方法如下面和两个容器,用于菜单和正文)
public AcceptsOneWidget getBodyContainer() {
return new AcceptsOneWidget() {
@Override
public void setWidget(IsWidget w) {
Widget widget = Widget.asWidgetOrNull(w);
bodyPanel.setWidget(widget);
}
};}
在我的 onModule 中返回,我这样声明了我的 ActivityMapper
BodyActivityMapper bodyContainerActivityMapper = new BodyActivityMapper(clientFactory);
ActivityManager bodyContainerActivityManager = new ActivityManager(bodyContainerActivityMapper, eventBus);
bodyContainerActivityManager.setDisplay(my_class_described_above.getBodyContainer());
使用 MenuActivityMapper 完成了相同的工作......
最后
RootLayoutPanel.get().add(my_class_described_above.getLayoutPanel());
当 getLayoutPanel() 返回我在上面声明的类中声明的 layoutPanel 时。
因此,每个区域都有自己的 ActivityMapper.ActivityMapper 的菜单只有一个活动,而“ActivityMapperBody”有几个由菜单触发的活动。
容器的用途是为不同的“动作”解决我的布局。我用它定义了区域,以便接收以活动开始的视图。
但是这个配置只适用于使用 UIbinder 构建的视图......在每个视图中,我声明一个布局并像这样返回它
public Widget asWidget() {
return my_layout_declared;
}
当我返回我的布局时,没有任何效果。我真的不明白为什么,我认为 smartgwt 更糟。我想要的只是检索我的布局并将其放入我的容器中......使用 smartgwt 可以节省大量时间......
我已经更详细地说明了我的问题,以确保任何人都能理解。如果你的帖子可以帮助我,请问你 Chris Lercher。
感谢阅读