Spring Boot没有加载静态资源,它取决于RequestMapping的深度

时间:2016-11-29 12:36:50

标签: spring-boot request-mapping static-resource

我在Spring启动应用程序的静态文件夹下加载文件时遇到问题。

问题是RequestMapping深度超过2,如@RequestMapping("spring/xyz")

@RequestMapping("spring")单一深度效果很好但是2深度是前缀' spring'它是连接localhost:8080 / spring /'静态文件夹'

我找到了一半解决方案here

我的文件夹结构是:

static/css/some.css  
static/templates/velocity.vm

案例1:效果很好

java:
    @RequestMapping("spring")

html:
    <link rel="stylesheet" href="css/some.css">

案例2:效果很好

java:
    @RequestMapping("spring/xyz")

html:
    <link rel="stylesheet" href="../css/some.css">

案例3:无法正常工作

java:
    @RequestMapping("spring/xyz/123")

html:
    <link rel="stylesheet" href="../css/some.css">

它被称为'http//localhost/spring/xyz/css/some.css'

案例3:效果很好

java:
    @RequestMapping("spring/xyz/123")

html:
    <link rel="stylesheet" href="../../css/some.css">

案例4:效果很好

java:
    @RequestMapping("123")

html:
    <link rel="stylesheet" href="../../css/some.css">

有效!!即使我使用../../相对路径。 我不知道为什么会这样。

实际上我并不太了解Spring Boot API,我认为使用ViewResoler加载其他静态资源。

我想知道这个加载路径机制以及如何通过RequestMapping url路径链接调用&#39; http // localhost / spring / xyz / css / some.css&#39;

我感谢任何回答〜!!

我在来自&#39; metalhead&#39;的spring.io here上提到同样的问题。和布莱恩克洛泽&#39;

1 个答案:

答案 0 :(得分:0)

如果您使用百里香叶,您还可以将路径指定为:

<link rel="stylesheet" th:href="@{/css/main.css}"
href="../static/css/main.css" />

它适用于我任何深度。