我正在尝试将我的GWT web应用程序从我自己开发的MVC调整为GWT平台。
我已经设法将我的应用程序视图移植到演示者,并且基本上能够通过PlaceRequest访问视图。以及更改URL(#)。
然而,我不知道如何使用这个GWT平台处理模型,在常见的MVP中,我知道演示程序中有一个go()方法,它可以通过RPC从服务器获取数据。
在GWT平台演示程序中,以下是Eclipse插件自动生成的方法:
- 施工单位
- 收入InParent
- onBind
- on重置
我应该把将获取和更新我的模型的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关联的视图时,我需要从服务器获取用户模型并更新模型,然后通过它公开的接口更新视图。
另外,假设我在视图中有一些按钮,演示者可以通过HasClickHandler
访问这些按钮,我应该把事件处理程序放在哪里?
我会把RPC调用放在onReset
方法中。查看演示者生命周期
就我个人而言,我用MVP模式来处理事件。但您也可以这样调用处理程序:
getView().getSubmitButton().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
}
});
在您的视图界面中具有getSubmitButton
的以下签名:
HasClickHandlers getSubmitButton()
Sydney回答了您的大部分问题。
一般来说,onReset
方法是进行后端调用的好地方
有时,当后端调用需要更长的时间,并且您希望仅在加载数据后显示视图时,可以使用手动显示
但对于个人资料页面,我认为这没有必要。
我也同意MVP的反向模式。使用反向MVP模式测试演示者要比使用HasXXXHandlers
接口容易得多。