Tiles和$ {pageContext.request.requestURL}

got*_*ch4 6 jsp tiles el

通常,要在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?

maj*_*zai 4

Tiles 已经重写/转发了该请求,因此当您的 jsp 收到该请求时,它已经不是原始请求了。

有两件事你可以做..

  1. 在你的控制器中获取原始 url 并将其作为属性request.setAttribute("origRequestURL", request.getRequestURL()),然后使用${origRequestURL}

  2. 看看这个属性是否保持了转发之前的原始属性: <% request.getAttribute("javax.servlet.forward.request_uri"); %>或者${requestScope['javax.servlet.forward.request_uri']}