当用户在GWT中查看另一个用户时,警告用户他将要在编辑视图中松开他的更改

时间:2015-05-28 20:55:51

标签: gwt-mvp mvp4g

我想阻止用户在将视图更改为另一个视图时将在EditView中丢失其更改。

我在我的项目中使用MVP4G,项目被分为mvp的结构(模板的一个包另一个用于视图..)是否有任何解决方案来检测eventBus中的EditView。或检测显示给用户的当前视图

提前致谢

2 个答案:

答案 0 :(得分:0)

由于mvp4g中的导航事件功能,演示者将在视图更改之前获得控制权。此时,演示者可以决定是否完成导航。这是mvp4g应用程序中保存数据的正确位置。

首先,zu必须在eventbus中标记所有将改变您的视图的事件:

@Event(..., navigationEvent = true)
void goToPage1();

接下来,您的演示者必须实现NavigationConfirmationInterface和require confirm-method:

public class Presenter extends ... implements NavigationConfirmationInterface {
     public void confirm(NavigationEventCommand event) {
          //pseudo method to verify if the view has changed
          if (isViewModified(){
               //Window shouldn't be used inside a presenter
               //this is just to give a simple example
               if (Window.confirm("Are you sure you want to leave?")){
                    event.fireEvent();
               }                                
          } else {
               event.fireEvent();
          }
     }
}

最后要做的是通过调用将当前视图的演示者设置为确认演示者:

event.fireEvent(false);

这通常在演示者获得控制权时完成。

您可以在此处找到文档:

https://github.com/FrankHossfeld/mvp4g/wiki/03.-Defining-EventBus#navigation-event

答案 1 :(得分:0)

感谢MVP4G的团队,包括 El Hoss ,他给了我一个检查MVP4G博客的提示..我已经通过这个例子解决了我的问题 http://mvp4g.blogspot.com/2011/06/navigation-control.html