【发布时间】:2010-09-09 19:26:37
【问题描述】:
对于每个 Web 开发人员来说,这是一个众所周知的问题。至于我试图找到解决这个问题的好方法 - 没有(或者至少我找不到)。
假设如下:
用户的行为不符合预期。 我正在从事的实际项目使用 Web 门户中的导航。但如果用户使用浏览器的后退按钮,整个事情就会变得危险[?],结果并不总是可以预测的。
我们使用了 struts 框架并将后退 url 存储到表单中——在某些地方,我们需要后退 url——这已从表单的后退 url 中呈现出来。因为该信息只有一个字段,因此不可能返回多个步骤。
当您更改“struts-flow”时 - 这可能会导致使用不同的表单 - 此信息将丢失。
如果用户胆敢在您的 web 应用中的某处放置 书签 - 此信息可能永远不会被设置,结果将再次变得不可预测或不够灵活!
我的“解决方案”:
我将用户访问的每个导航相关页面存储到 类似堆栈的存储到 会话中。这意味着收集并存储导航路径以供以后导航。
在 web 应用程序中涉及反向导航的任何页面上,我使用了一个自制标签,它将堆栈内容呈现到 url。
就是这样。 当点击这个后退 url 时,堆栈已经被用户点击的后退 url 中的内容填充(一旦返回链接被渲染,它保存了堆栈中的所有信息)。
这很清楚,因为点击链接是一个清晰的状态,Web 开发人员确切地知道此时用户“在”哪里 - 绝对独立于用户之前所做的任何事情(例如点击浏览器多次返回按钮)。然后导航堆栈建立在这个新状态之上。
简历: 很明显,这不是最好的解决方案。但它允许在堆栈上存储额外的信息,如页面参数和其他一些有用的东西(可能的进一步开发)。
那么,您对此问题的解决方案是什么?
干杯,
法力
【问题讨论】:
标签: browser navigation struts