如何在Struts with Tiles中获取真实的请求URL?
当您将 Tiles 与 Struts 一起使用时...
request.getRequestURL()
...您将获得 URL,例如 /WEB-INF/jsp/layout/newLayout.jsp
而不是输入的真实 URL/用户点击,类似于 /context/action.do
。
在较新的 Struts 版本 1.3.x 及更高版本中,您可以使用 javaranch上提到的解决方案并使用请求属性获取真实URLORIGINAL_URI_KEY
。
但在 Struts 1.2.x 中如何做到这一点呢?
When you're using Tiles with Struts and do...
request.getRequestURL()
...you get the URL to e.g. /WEB-INF/jsp/layout/newLayout.jsp
instead of the real URL that was entered/clicked by the user, something like /context/action.do
.
In newer Struts versions, 1.3.x and after, you can use the solution mentioned on javaranch and get the real URL using the request attribute ORIGINAL_URI_KEY
.
But how to do this in Struts 1.2.x?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这适用于 Struts 1.2
This works in Struts 1.2
我不知道 Struts 1.2.x 是否有类似的 Globals 常量,但您可以通过至少两种方式创建自己的常量:
I don't know if Struts 1.2.x has a similar Globals constant, but you could create your own in at least two ways:
当您从 view/jsp/tiles 层查询 request.getRequestURL() 时,它已经是另一个重写的请求。
正如 Mwanji Ezana 提到的,最合适的方法是在操作执行阶段将其保存到单独的属性中。 您可能希望借助 Struts2 中的拦截器来自动化此过程。
When you query request.getRequestURL() from your view/jsp/tiles layer, it's already another rewritten request.
As Mwanji Ezana mentions, the most suitable way is to save it to separate property on the action execution phase. You may want to automate this process with the help of interceptors in Struts2.
我使用这个,它也适用于 Spring:
如果您还需要查询字符串(由 matchew 贡献):
I use this, which also works on Spring:
If you also need the query string (contributed by matchew):
你只需要在你的行动中做到这一点:
You just need to do this in your action: