0

我的 Spring MVC + Apache tile 2 项目有以下配置。

瓷砖配置

<definition name="test1" extends="mymain">
    <put-attribute name="main">
        <定义模板="/WEB-INF/views/tiles/template/generictemplate.jsp">
            <put-attribute name="headerstyle" value="./resources/css/header.css" type="string" />
            <put-attribute name="genericcontent" value="/WEB-INF/views/tiles/test.jsp" />                 
        </定义>
    </put-属性>
</定义>
<definition name="test2" extends="mymain">
    <put-attribute name="main">
        <定义模板="/WEB-INF/views/tiles/template/generictemplate.jsp">
            <put-attribute name="headerstyle" value="./resources/css/header.css" type="string" />
            <put-attribute name="genericcontent" value="/WEB-INF/views/tiles/test.jsp" />                 
        </定义>
    </put-属性>
</定义>

控制器

@RequestMapping(value="/test1", method=RequestMethod.GET)
    公共字符串 test1(@RequestParam(value="id", required=true) 字符串 id){
        返回“测试1”;
    }
@RequestMapping(value="/test2", method=RequestMethod.GET)
    公共字符串 test2(){
        返回“测试2”;
}

视图 generictemplate.jsp

<%@ 包含文件="include.jsp" %>
<tiles:importAttribute name="headerstyle" />
<link href="${headerstyle}" rel="stylesheet" type="text/css" />

<div role="main" class="main clearfix">
        <section class="通用">
            <div class="post">
                <tiles:insertAttribute name="genericcontent"/>
            </div>
        </节>
    <!-- 结束主要 -->
</div>

我的问题是 当我调用 test2(不带参数)时,可以读取 header.css。但是当调用 test1 时,我得到header.css 的404 Not Found。我注意到视图正在尝试使用路径访问 css

http://localhost:8080/myproject/test1/resources/css/header.css
代替
http://localhost:8080/myproject/resources/css/header.css
当 test1 调用时。那么为什么@RequestParam 会产生这种影响呢?

谢谢。

4

1 回答 1

0

这是因为 css 是相对于当前 URL 加载的。对于 test1,您有一个在 test1 之后添加斜杠的参数。其中 test2 没有参数,因此它相对于父目录。

您可以尝试使用 css 的绝对路径。

于 2012-11-20T18:17:37.863 回答