2012-02-26 63 views
0

我试图将我的GWT Web应用程序从我自己生成的MVC调整为GWT Platform使用GWT平台处理模型保存和更新

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

但是我不知道如何处理在常见的MVP中使用这个GWT平台的模型我知道在演示程序中有一个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. 

当与演示相关的视图显示我需要从服务器获取用户模型和更新模型并随后更新通过它暴露的接口的视图。

另外,假设我在视图中有一些按钮,然后可以通过主持人通过HasClickHandler访问,我应该在哪里放置事件处理程序?

回答

0

悉尼覆盖了大部分的您的问题。

一般onReset方法是进行后端调用的好地方。
有时,当后端调用需要更长时间并且只有在数据加载后才想显示视图时,可以使用manual reveal
但对于配置文件页面,我不认为这是必要的。

我也同意反向MVP模式。使用反向MVP模式测试演示者比使用HasXXXHandlers接口更容易。

+0

其实你是对的,我的意思是我现在想要使用GWTP的主要原因是我的应用程序RPC确实需要时间来获取。我的意思是,它的数据来自几个RPC调用,使UI在某个时间点显示空白字段。这是我家的MVC的主要问题。 – xybrek 2012-02-27 10:51:20

2

我会把RPC调用放在onReset方法中。 See the presenter lifecycle

我个人使用reversed MVP pattern处理事件。但你也可以调用处理程序是这样的:

getView().getSubmitButton().addClickHandler(new ClickHandler() { 
     @Override 
     public void onClick(ClickEvent event) { 
     } 
    }); 

具有以下签名的getSubmitButton在您的视图界面:

HasClickHandlers getSubmitButton()