我正在尝试将我的GWT Web应用程序从我自己开发的MVC调整为GWT Platform。
我设法用演示者移植我的应用程序视图,并且基本上能够通过PlaceRequest访问视图。并通过更改URL(#)。
但是我不知道如何处理使用这个GWT平台的模型,在常见的MVP中,我知道在演示者中有一个go()方法,它从服务器通过RPC获取数据。
在GWT平台中,演示者是Eclipse插件自动生成的方法:
我应该在哪里放置将获取和更新我的模型的RPC代码。我在演讲者中说:
ProfilePresenter.java:
public class ProfilePresenter
extends
Presenter<ProfilePresenter.MyView, ProfilePresenter.MyProxy> {
public interface MyView extends View {
HasText getFullname();
HasText getLocation();
HasText getAboutme();
HasText getLastlogin();
}
private User user; // Model which represents the User information etc.
当显示与Presenter关联的View时,我需要从服务器获取User模型并更新模型,然后通过它公开的接口更新视图。
另外,假设我在视图中有一些按钮,然后演示者可以通过HasClickHandler
访问,我应该在哪里放置事件处理程序?
答案 0 :(得分:2)
我会将RPC调用放在onReset
方法中。
See the presenter lifecycle
我个人使用reversed MVP pattern来处理事件。但你也可以用这种方式调用处理程序:
getView().getSubmitButton().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
}
});
在视图界面中使用getSubmitButton
的以下签名:
HasClickHandlers getSubmitButton()
答案 1 :(得分:0)
悉尼涵盖了大部分问题。
通常onReset
方法是进行后端调用的好地方
有时,当后端调用需要更长时间并且您希望仅在加载数据后显示视图时,您可以使用manual reveal。
但对于个人资料页面,我认为没有必要。
我也同意反向MVP模式。使用反向MVP模式测试演示者比使用HasXXXHandlers
接口更容易。