Thymeleaf,IntelliJ和Spring Boot无法正确加载CSS文件

时间:2018-03-22 05:04:21

标签: html css spring intellij-idea thymeleaf

我一直在遇到这个问题,每次,我只能通过创建一个似乎有用的新项目来解决它。这次我打算找出这种情况发生的原因,或者我经常遇到这种情况。 CSS文件作为HTML文件加载到服务器中,当我打开相关路径时,它们以HTML格式打开

位于templates / index.html

下的索引文件
  <!DOCTYPE html>
    <html lang="en"
           xmlns="http://www.w3.org/1999/xhtml"
           xmlns:th="http://www.thymeleaf.org">
     <head>
            <meta charset="UTF-8" />
            <title>Title</title>
            <link type="text/css" th:href="@{/css/styles.css}" href="../static/css/styles.css"
                  rel="stylesheet" />
        </head>
        <body>

    <script type="text/javascript" th:src="@{/js/bootstrap.min.js}"></script>
    <script type="text/javascript" th:src="@{/js/jquery.js}"></script>

    </body>
    </html>

这是我的CSS文件,位于resources / static / css / styles.css

body {
    color: blue;
}

我的classpath上有Spring安全性所以我将安全性配置为

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private static final String[] PUBLIC_MATCHERS = {
            "/css/**",
            "/js/**",
            "/webjars/**",
            "/static/**"
    };

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests().antMatchers(PUBLIC_MATCHERS).permitAll()
                .anyRequest().authenticated()
                .and().formLogin();
    }
}

我不明白为什么浏览器会这样加载

似乎所有资源都根据网络状态成功加载

enter image description here

当我点击styles.css时,这是调试器中的输出。我不知道为什么

enter image description here

enter image description here

enter image description here

在我再次启动新项目之前,非常感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

经过一系列测试后,我能够解决问题,产生这个问题。 当我将映射保留为允许我的控制器直接映射到根映射时,会出现问题。

示例是

@GetMapping // Here is the problem... This was the only method in the controller
public String home() {
  return "index";
}

我通过设置像

这样的映射来解决这个问题
@GetMapping(value= "/")
public String home() {
   return "index";
}

或使用班级映射

@RequestMapping(value= "/")
public class Controller {

   public String home() {
     return "home";
   }

}