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/*");
}
}
папку структуру:
Я попытался поставить на 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
).