2011-06-28 75 views
0

当提交表单时,一个好的设计方案应该是“后退”,然后是“前进”浏览器按钮的行为。 类似的问题是,当用户注销应用程序然后点击“转发”浏览器按钮时应该发生什么?提交按钮+ GWT历史记录

我很乐意听到上述情况的一些场景。

谢谢。

编辑 - 要善于分享,我的观点:-)

我个人的意见是注销后,用户应不能够不经过登录页面输入应用程序。 对于提交场景 - 在提交并返回浏览器按钮后,用户应该能够返回到表单,但不包含数据。

+0

你还想要什么? –

回答

1

一种常见模式是Post/Redirect/Get。在该模式下,该帖子的结果是可收藏的(和后退/前进可导航)页面。后退按钮有一个常见的含义:“我不是故意要去这里,把我带回我所在的位置”,就像在大多数Windows对话框中打ESC一样,而“前进”按钮意味着“我不是故意要撞到后面按钮,毕竟我想要那个页面。“这种模式不适用于所有人;当每个页面(包括对表单提交的响应)表示您想要书签的某​​个概念实体时,它是最有意义的。

至于注销场景,大多数应用程序会检查您是否登录,而不管网址是在URL中指定的,如果您未登录,则重定向到登录表单(您不必代码在每个页面上;检查通常是一个Valve或其他东西)。一个很好的功能是记住用户试图去的地方,并在成功登录后将它们带到那里。

你的问题更多的是关于设计而不是技术,所以GWT并没有真正改变图片,除非要注意GWT历史机制旨在模仿链接所连接的静态页面的行为,其中post/redirect /得到模式也是。

+0

感谢gatkin,非常有用。 :) – adgfs

1

使用状态机来保持用户(会话)和请求状态是很常见的。如果你有这样的状态机,那么你知道用户正在尝试错误的转换。根据用户状态和错误的转换,您可以将用户转发到页面。例如,如果用户尝试转到需要登录的页面,但他/她已经注销,则可以将他/她发送到登录页面,但可以提供用户名并只需要输入密码。

要添加此功能,您可以通过在代码中对状态机进行硬编码来编写自己的代码,也可以使用其中一个可用的库。例如, Spring Web Flow为Spring框架提供了此功能。

+0

感谢您与我分享您的意见:) – adgfs