我想从 JSP 文件中获取我所在页面的当前路径。在这种情况下,JSP 文件是作为 apache tile 框架的一部分的 Tile。
我点击的 URL 是http://localhost:8080/dashboard/projects
'dashboard' 是 servlet 和 'projects' 映射到 spring 控制器的地方,如下所示:
@RequestMapping( { "/projects" } )
public String showAllProjectsPage( Map< String, Object > model ) {
return "projects";
}
其中“项目”是指在我的 views.xml 中定义的磁贴,如下所示:
<tiles-definitions>
<definition name="template" template="/WEB-INF/views/template.jsp">
<put-attribute name="header" value="/WEB-INF/views/shared/header.jsp" />
<put-attribute name="sidebar" value="/WEB-INF/views/shared/sidebar.jsp" />
<put-attribute name="footer" value="/WEB-INF/views/shared/footer.jsp" />
<put-attribute name="head" value="/WEB-INF/views/shared/head.jsp" />
</definition>
<definition name="home" extends="template">
<put-attribute name="content" value="/WEB-INF/views/home/home.jsp" />
</definition>
<definition name="developer" extends="template">
<put-attribute name="content" value="/WEB-INF/views/developers/developer.jsp"></put-attribute>
</definition>
<definition name="developers" extends="template">
<put-attribute name="content" value="/WEB-INF/views/developers/developers.jsp"></put-attribute>
</definition>
<definition name="project" extends="template">
<put-attribute name="content" value="/WEB-INF/views/projects/project.jsp"></put-attribute>
</definition>
<definition name="projects" extends="template">
<put-attribute name="content" value="/WEB-INF/views/projects/projects.jsp"></put-attribute>
</definition>
</tiles-definitions>
我尝试了以下方法,但它们对我不起作用:
<% out.println(request.getPathInfo( )); %>
输出:“ null
”
<% out.println(request.getPathTranslated( )); %>
输出:“ null
”
<% out.println(request.getRequestURI( )); %>
输出:“ /dashboard/WEB-INF/views/template.jsp
”
<% out.println(request.getRequestURL( )); %>
输出:“ http://localhost:8080/dashboard/WEB-INF/views/template.jsp
”
<% out.println(request.getServletPath( )); %>
输出:“ /WEB-INF/views/template.jsp
”
我感兴趣的路径部分是“项目”,我认为该方法request.getPathTranslated()
可以为我做到这一点,但没有骰子。我只能取回'null'或瓷砖模板的路径。