使用GWT平台处理模型保存和更新

时间:2012-02-26 03:53:59

标签: gwt gwt-platform

我正在尝试将我的GWT Web应用程序从我自己开发的MVC调整为GWT Platform

我设法用演示者移植我的应用程序视图,并且基本上能够通过PlaceRequest访问视图。并通过更改URL(#)。

但是我不知道如何处理使用这个GWT平台的模型,在常见的MVP中,我知道在演示者中有一个go()方法,它从服务器通过RPC获取数据。

在GWT平台中,演示者是Eclipse插件自动生成的方法:

  • 构造
  • revealInParent
  • onBind
  • onReset

我应该在哪里放置将获取和更新我的模型的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访问,我应该在哪里放置事件处理程序?

2 个答案:

答案 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接口更容易。