【问题标题】:Submit button + GWT History提交按钮 + GWT 历史
【发布时间】:2011-06-28 09:15:33
【问题描述】:
提交表单时的一个很好的设计解决方案,“返回”然后“前进”浏览器按钮的行为应该是什么。
类似的问题是当用户注销应用程序然后单击“转发”浏览器按钮时会发生什么?
我很高兴听到上述情况的一些场景。
谢谢。
编辑 - 应该很好地分享和我的观点:-)
我的个人意见是,用户在注销后不通过登录页面就不能进入应用程序。
对于提交场景 - 提交并返回浏览器按钮后,用户应该能够返回到表单但没有包含数据。
【问题讨论】:
标签:
java
gwt
history
gwt-history
【解决方案1】:
一种常见的模式是Post/Redirect/Get。在这种模式下,帖子的结果是一个可收藏(和向后/向前导航)的页面。 “后退”按钮具有“我不是有意去这里,带我回到我原来的位置”的常见含义之一,就像在大多数 Windows 对话框中按 ESC 一样,而“前进”按钮的意思是“我不是故意打后退”按钮,毕竟我想要那个页面。”这种模式并不适用于所有人。当每个页面(包括对表单提交的响应)都代表您想要添加书签的一些概念实体时,这是最有意义的。
对于注销场景,大多数应用程序无论在 URL 中指定哪个页面,都会检查您是否已登录,如果您未登录,则重定向到登录表单。(您不必编码在每个页面上;检查通常是 Valve 或其他东西。)一个很好的功能是记住用户试图去哪里,并在成功登录后将他们带到那里。
您的问题更多是关于设计而不是技术,因此 GWT 并没有真正改变情况,只是要注意 GWT 历史机制旨在模仿通过链接连接的静态页面的行为,即 post/redirect/get模式也可以。
【解决方案2】:
使用状态机来保持用户(会话)和请求状态是很常见的。如果您有这样的状态机,那么您就知道用户正在尝试错误的转换。根据用户状态和错误转换,您可以将用户转发到页面。例如,如果用户试图进入需要登录的页面,但她/他已经退出,您可以将她/他发送到登录页面,但您可以提供用户名并且只要求输入密码。
要添加此功能,您可以通过在代码中硬编码状态机来编写自己的代码,也可以使用可用的库之一。例如,
Spring Web Flow 为 Spring 框架提供了这个功能。