当你在Struts中使用Tiles的时候...
request.getRequestURL()
...you将URL获取到例如/WEB-INF/jsp/layout/newLayout.jsp
,而不是用户输入/点击的真实URL,例如/context/action.do
。
在较新的Struts1.3.x及以后版本中,您可以使用solution mentioned on javaranch并使用请求属性ORIGINAL_URI_KEY
获取实际的URL。
但是在Struts 1.2.x中如何做到这一点呢?
发布于 2010-07-21 19:12:01
我使用这个,它也适用于Spring:
<% out.println(request.getAttribute("javax.servlet.forward.request_uri")); %>
如果您还需要查询字符串(由matchew提供):
<% out.println(request.getAttribute("javax.servlet.forward.query_string")); %>
发布于 2010-09-15 02:43:25
当您从视图/jsp/tile层查询request.getRequestURL()时,它已经是另一个重写的请求。
正如Mwanji Ezana提到的,最合适的方法是在操作执行阶段将其保存到单独的属性中。您可能希望在Struts2拦截器的帮助下自动执行此过程。
发布于 2008-10-01 11:04:11
这在Struts1.2中有效
private String getOriginalUri(HttpServletRequest request) {
String targetUrl = request.getServletPath();
if (request.getQueryString() != null) {
targetUrl += "?" + request.getQueryString();
}
return targetUrl;
}
https://stackoverflow.com/questions/132118
复制相似问题