【发布时间】:2012-12-16 13:22:17
【问题描述】:
我正在开发一个网络应用程序,用户在该应用程序中选择要使用的帐户,然后他们点击的所有 URL 都指向该帐户。当前活动帐户存储在会话中,但这意味着它不包含在用户书签中,当用户会话超时时它会丢失,并且当用户共享链接时它们不包含相关帐户...
有什么方法可以在每个 URL 中包含 accountID 而无需手动将其添加到(相当大且仍在增长的)web 应用程序中的所有 URL 中?
一种方法是将其作为路径的第一部分,因此所有 URL 都类似于:
- /123/discussions/view.do
- /123/account/edit.do
以此类推,其中123 是accountID。
如果所有路径都可以是相对的,那就可以了。但我还没有想出如何让这种方法与 Struts 命名空间很好地配合使用。
通常,由 Struts2 标签库生成的所有路径都以 / 开头,并且操作通配符匹配也不会在 之后 匹配命名空间。
如果我能以某种方式在路径之后命名空间部分中获得accountID,我认为我可以使用操作通配符来执行正确的操作,但困难的部分仍然是让 ID 进入首先是 URL。
最好的解决方案可能只是制作<s:a>、<s:form> 和<s:url> 的自定义版本,但我不确定这有多容易。
重要
有一些答案仅涉及如何将这些 URL 映射到 Actions。
这个问题更难的部分实际上是如何将accountID 放入所有 URL 并形成路径,而无需手动将其添加到整个应用程序中的每一个。
在我看来,目前唯一的方法是为 URL 和表单制作自定义版本的 Struts JSP 标记。所以任何关于如何做到这一点的指示都会很有用。
【问题讨论】:
标签: java jsp url struts2 wildcard