好的,这是要求。
我想构建一个如下所示的系统:
- 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
位于顶部&一个内容部分(标题下方)包含一些textarea
和button
,供用户输入数据并提交给DB。
为了能够访问用户需要登录的内容页面中的窗口小部件,登录后,PleaseLoginPanel
将不可见,SuccessfulLoginPanel
将可见。用户现在可以在内容部分中使用小部件。
假设Session & Cookies
将持续1小时,在会话cookie过期后,用户无法提交内容数据。
让我们说用户花了很多精力来准备数据&即将提交,但会议已过期,因此他无法提交。那时,在标题中SuccessfulLoginPanel
仍然留在那里。因此,用户可能会丢失他之前准备的所有内容。你可以说,他可以打开一个新的页面&登录&复制旧页面中的数据(会话已过期且没有PleaseLoginPanel
的页面),但这仍然需要花费大量精力才能复制。
所以我想要的是,当Cookes刚过期时,它会向Header&请标题显示PleaseLoginPanel
我们如何在GWT或GWTP中做到这一点?
答案 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);