如何在Cookie刚刚过期的GWT中触发事件?

时间:2014-05-31 05:17:55

标签: gwt gwtp

好的,这是要求。

我想构建一个如下所示的系统:


- Header: have a PleaseLoginPanel and SuccessfulLoginPanel
- Content Page just contains content & communicate with header via EventBuss
- HeaderPresenter is the parent presenter & ContentPresenter is nested inside the Header presenter.

当用户打开此网址“mydomain#content”时,他们会看到一个页面上有一个标题PleaseLoginPanel位于顶部&一个内容部分(标题下方)包含一些textareabutton,供用户输入数据并提交给DB。

为了能够访问用户需要登录的内容页面中的窗口小部件,登录后,PleaseLoginPanel将不可见,SuccessfulLoginPanel将可见。用户现在可以在内容部分中使用小部件。

假设Session & Cookies将持续1小时,在会话cookie过期后,用户无法提交内容数据。

让我们说用户花了很多精力来准备数据&即将提交,但会议已过期,因此他无法提交。那时,在标题中SuccessfulLoginPanel仍然留在那里。因此,用户可能会丢失他之前准备的所有内容。你可以说,他可以打开一个新的页面&登录&复制旧页面中的数据(会话已过期且没有PleaseLoginPanel的页面),但这仍然需要花费大量精力才能复制。

所以我想要的是,当Cookes刚过期时,它会向Header&请标题显示PleaseLoginPanel

我们如何在GWT或GWTP中做到这一点?

1 个答案:

答案 0 :(得分:0)

找到一个使用计时器的解决方案

    Timer showLoginPanelTimer = new Timer() {
          public void run() {

              getView().getLoginPanel().setVisible(true);
              getView().getSuccessfulLoginPanel().setVisible(false);
              getView().getEmailBox().setText("");
              getView().getPasswordBox().setText("");
              Utility.removeUserInfoCookies();
          }
     };


    showLoginPanelTimer.schedule(Utility.COOKIE_TIMEOUT);