如何在Struts with Tiles中获取真实的请求URL?

13 java struts servlets tiles

当你使用带有Struts的Tiles并做...

request.getRequestURL()
Run Code Online (Sandbox Code Playgroud)

...你得到的网址是,/WEB-INF/jsp/layout/newLayout.jsp而不是用户输入/点击的真实网址,例如/context/action.do.

在较新的Struts版本,1.3.x及更高版本中,您可以使用javaranch上提到解决方案并使用request属性获取真实的URL ORIGINAL_URI_KEY.

但是如何在Struts 1.2.x中做到这一点?

dig*_*666 15

我使用它,这也适用于Spring:

<% out.println(request.getAttribute("javax.servlet.forward.request_uri")); %>
Run Code Online (Sandbox Code Playgroud)

如果您还需要查询字符串(由matchew提供):

<% out.println(request.getAttribute("javax.servlet.forward.query_string")); %>
Run Code Online (Sandbox Code Playgroud)


Mwa*_*ana 1

我不知道 Struts 1.2.x 是否有类似的 Globals 常量,但您可以至少通过两种方式创建自己的常量:

  • 获取 Action 中的原始请求 URL 并将其设置在请求上,然后从 JSP 中调用它
  • 使用 Servlet Filter 来做同样的事情