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