通常,要在JSP中获取请求URL,我会使用
${pageContext.request.requestURL}
Run Code Online (Sandbox Code Playgroud)
但是在我正在使用的项目上(因为我们使用的是瓷砖)如果我运行上面的内容,我会得到类似的东西
WEB-INF/pathTo/pageName.jsp
Run Code Online (Sandbox Code Playgroud)
即使请求URL是另一个,这只是使用tile包含的JSP的路径.
在这种情况下,如何使用JSP EL获取请求URL?
Tiles 已经重写/转发了该请求,因此当您的 jsp 收到该请求时,它已经不是原始请求了。
有两件事你可以做..
在你的控制器中获取原始 url 并将其作为属性request.setAttribute("origRequestURL", request.getRequestURL()),然后使用${origRequestURL}
看看这个属性是否保持了转发之前的原始属性:
<% request.getAttribute("javax.servlet.forward.request_uri"); %>或者${requestScope['javax.servlet.forward.request_uri']}