【问题标题】:Spring boot, Bootstrap is not rendering bootstrap style pageSpring Boot,Bootstrap 不渲染 bootstrap 样式页面
【发布时间】:2016-11-25 17:14:54
【问题描述】:

我正在使用 bootstrap 和 jsp 制作一个 spring boot mvc 应用程序,我的应用程序在其他映射中运行良好,但在第二级,如 url localhost:8080/admin/addSomething 它呈现一个简单的 html 页面而不是引导带样式页面,你能提出一些建议吗? 下面是我的静态资源的路径

src/main/resources/static/public/css/customstyle.css/...

src/main/resources/static/public/lib/bootstrap/css/...

src/main/resources/static/public/lib/bootstrap/js/...

src/main/resources/static/public/lib/bootstrap/images/...

src/main/resources/static/public/lib/bootstrap/vendor/bootstrap/

src/main/resources/static/public/lib/bootstrap/vendor/font-awesome/...

src/main/resources/static/public/lib/bootstrap/vendor/jquery/...

我是 bootstrap 新手,所以我只是从 google 复制了开源模板并使用它。

花了很长时间处理问题后,我尝试将其放入我的 application.properties 文件中

spring.resources.add-mappings=true
spring.resources.static-locations=/resources/

但是当我添加时

spring.resources.static-locations=/resources/

然后我的其他页面也停止显示引导样式

我也在我的主应用程序类中尝试过这个

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}  

但似乎没有任何效果,任何人都可以提出一些解决方案吗?

我在页面上的 jsp / html 代码很好,因为当我将其路径映射到 localhost:8080/addSomething 时它显示出所需的外观

【问题讨论】:

    标签: css spring twitter-bootstrap jsp spring-mvc


    【解决方案1】:

    您的 JSP 中的静态资源是如何链接的?它们应该以 / 开头,例如/aa/bb.css,更好的是,您应该使用 c:url,例如<c:url value="/aa/bb.css" />

    【讨论】:

    • 是的,我的资源是以这种方式链接的../public/...../style.css。有些链接为 而有些则链接 href .... 我想这可能是问题所在。但是为什么它在第一级映射上显示良好,例如在 root 或 root / admin 上。无论如何都会通过正确链接我的jsps再试一次
    • 因为,应用程序试图从相对路径中抓取资源。例如。对于链接“abc/xyz.css”,如果您位于第一级,则相对路径将变为“localhost:8080/abc/xyz.css”,这很好。但是,如果您在“localhost:8080/admin”,则路径将变为“localhost:8080/admin/abc/xyz.css”,这是错误的。这就是为什么您应该始终以 / 开始此类链接。
    • 是的,它确实有效,我忘了在公共之前放一个“/”,所以正确的路径应该是 。早些时候试图在评论中回复,但我的互联网已关闭,因此无法回复。