【问题标题】:Get path from a JSP with Apache Tiles 3 and Spring MVC 3.2.3使用 Apache Tiles 3 和 Spring MVC 3.2.3 从 JSP 获取路径
【发布时间】:2013-09-07 04:43:30
【问题描述】:

我想从 JSP 文件中获取我所在页面的当前路径。在这种情况下,JSP 文件是作为 apache tile 框架的一部分的 Tile。

我点击的 URL 是 http://localhost:8080/dashboard/projects,其中“仪表板”是 servlet,“项目”映射到一个弹簧控制器,如下所示:

@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'或瓷砖模板的路径。

【问题讨论】:

    标签: java jsp spring-mvc tiles-3


    【解决方案1】:

    我不确定getPathTranslated() 应该做什么,但如果它不起作用,您可以添加model 的路径作为解决方法吗?

    @RequestMapping("/projects")
    public String showAllProjectsPage( Map< String, Object > model ) {
        model.put("tileDef", "projects");
        return "projects";
    }
    

    然后在你的 JSP 中像这样访问它:

    <span id="tileDef">${tileDef}</span>
    

    【讨论】:

    • 这就是我最终要做的事情,尽管我仍然希望有人能对 getPathTranslated() 不起作用的原因提供一些见解。 javadoc 说:“在 servlet 名称之后但在查询字符串之前返回任何额外的路径信息”,这正是我正在寻找的。​​span>
    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多