【发布时间】:2012-04-02 06:38:55
【问题描述】:
我已经在 .jsp / JSTL / EL 中实现了一个运行良好的网站。但是,根据浏览器 (!),后退按钮的行为会有所不同。
我确实注意不要重复发布(这样浏览器就不会警告用户他将再次发布)但显然这会导致另一个问题:如果我使用 Chrome 中的后退按钮,那么值的复选框不正确。
这是我理解的场景:
- 用户在页面 /page1 然后选中一个复选框
- 一个 POST 被创建,有一个 HTTP 重定向
- 生成了一个 GET,页面 /page2 显示正常,复选框被选中
- 用户点击返回按钮
- 用户返回到 /page1,因为它是 选中复选框之前的状态(这正是返回按钮的预期行为)但是 复选框仍处于选中状态。
据我所知,从查看服务器日志和我的应用程序日志来看,绝对没有任何内容传输到网络服务器。因此,事情发生在纯粹是在客户端。
发生了什么,我该如何解决? (不使用框架,这不是这个问题的目的)
编辑我可能应该提供更多信息... webapp 已经有点“花哨”了,因为每个页面都以类似 URL 的方式提供——对应于状态。一切都是“公开的”:任何人都可以看到任何人的页面(但它可以是私有的,带有私有 URL)。无论如何:如果用户共享其页面的任何,当另一个用户打开一个页面时,它应该正确显示并且复选框正确初始化。
所有这一切都表明问题不在服务器端,“状态”在某种程度上是不正确的:如果用户 A 共享页面 .../1d2eof 那么用户 B 打开页面 .../1d2eof应该会看到正确的页面。
只有当用户使用后退按钮时才会出现问题。请记住,在任何时候,我都可以在服务器端访问整个页面的状态。但是我的问题是,显然当使用后退按钮 nothing 会联系我的服务器,所以我没有机会为使用后退按钮的用户“修复页面”。
也许双重重定向会有所帮助!?
【问题讨论】:
标签: java web-applications checkbox back