在Spring的InternalResourceViewResolver中使用<c:url>或$ {pageContext.request}获取servlet路径</c:url>

时间:2013-01-12 16:32:10

标签: java spring-mvc

我正在使用Spring中的InternalResourceViewResolver来呈现/WEB-INF/view中存在的视图。我也在视图中使用JSTL。现在,问题出现在<url-pattern>DispatcherServlet的{​​{1}}更改后。

我尝试通过web.xml获取servlet路径,但它返回${pageContext.request.servletPath}这是WEB-INF目录中的路径,而/WEB-INF/view/skel/welcome.jsp返回控制器Java代码中的request.getServletPath()/h2o还会在视图文件(<% out.print(request.getServletPath()); %>)中返回/WEB-INF/view/skel/welcome.jsp

它似乎来自控制器Java代码中的请求实例之间的差异。 JSP视图文件。 Request是JSP视图文件中/WEB-INF/view/skel/welcome.jsp的实例,但它是控制器Java代码中org.apache.catalina.core.ApplicationHttpRequest的实例。

到目前为止,幸运的是,我们单独安装它并不需要关心org.apache.catalina.connector.RequestFacade或servlet路径。但是这个项目需要与其他系统集成,以便从视图文件获取servlet路径,以映射某些菜单或表单操作目标的正确URL。

您是否有任何想法从视图文件中获取正确的servlet路径(<uri-patter>)?

2 个答案:

答案 0 :(得分:6)

$ {requestScope [&#39; javax.servlet.forward.servlet_path&#39;]}也适合您。

答案 1 :(得分:1)

让控制器代码将request.getServletPath()的结果放入请求范围内的变量中,然后在JSP中使用jstl引用它。