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