SpringBoot с Thymeleaf-css не найден

во-первых, я уже некоторое время ищу решение, и теперь я в отчаянии.

Я не могу получить файл css для доступа с html-страницы при запуске Spring Boot.

HTML-код.файл

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
    <head lang="en">
        <title th:text='#{Title}'>AntiIntruder</title>
        <meta charset="UTF-8" />
        <link rel="stylesheet" type="text/css" media="all" href="../assets/css/style.css" th:href="@{/css/style.css}" />
    </head>
    <body>
...

приложение.java

@SpringBootApplication // adds @Configuration, @EnableAutoConfiguration, @ComponentScan
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

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

папку структуру:

folder structure

Я попытался поставить на static папка и / или удаление addResourcesHandlers, ссылаясь на css по относительному пути и некоторые другие вещи. Кажется, ничто не решает эту проблему. Пожалуйста, дайте мне знать, если вы пытались решить эту проблему, но не нашли решения, чтобы я знал, что меня не игнорируют.

5 ответов


1. Использование Пользовательского Пути Ресурса

в вашей веб-конфигурации

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  if (!registry.hasMappingForPattern("/assets/**")) {
     registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
  }
}

положить style.css файл внутри этой папки

src/main/resources/assets/css/

после этого в ваших взглядах

<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />

.

2. Использование предопределенных путей в spring boot

удалить addResourceHandlers из веб-конфига

поставить style.css внутри любого из следующих папки

  • src/main/resources/META-INF/resources/assets/css
  • src/main/resources/resources/assets/css/
  • src/main/resources/static/assets/css/
  • src/main/resources/public/assets/css/

и

<link rel="stylesheet" type="text/css" th:href="@{/assets/css/style.css}" />

.

Примечание: Вы можете удалить здесь. Если вы хотите это сделать, удалите его из предопределенной папки ресурсов, а также из представления th:href. Но я сохранил его как есть, потому что вы явно упомянули assets/ путь в вашем вопросе. Так что я верю, что это твое. требование assets/ в URL вашего ресурса.


проблема @EnableWebMvc аннотации . Как только я удалил этот, css начал быть доступным в localhost:8080/css/style.css, но не был применен. До сих пор я не нашел причину, почему @EnableWebMvc был причиной проблемы.

затем я удалил контроллер, подключенный к /** что я реализовал, чтобы отобразить пользовательскую страницу ошибки.

@RequestMapping("/**")
public String notFound() {
    return "errors/404";
}

после удаления также этого, у меня есть мой css работает. =)


Если вы поместите css в статическую папку, Вам не нужен метод addResourceHandlers.

.../static/css/app.css

или если вы действительно хотите поместить их в папку assets:

.addResourceLocations("classpath:/assets/") <-- without the * at the end
.../assets/css/app/css

в обоих случаях CSS должен быть доступен через

th:href="@{/css/app.css}"

мой совет-поставить (опять) под static папка, удалить addResourcesHandlers и достичь css с абсолютным путем (например,/css/style.css).


поместите папку css внутри ресурсы / static папку