我正在尝试同时配置
Spring5
和 Thymeleaf3
。
我正在使用 Eclipse,我使用
clean install
进行构建并使用 springboot:run
运行应用程序。
我已经设置了一个控制器和几个模板和CSS,但似乎thymeleaf找不到CSS,在浏览器中它显示模板(例如'panda.html')而不加载CSS,但如果我手动打开.html 浏览器还会加载 .css 。我需要在我的代码中添加什么?
这是映射
@Controller
public class MyController {
@Autowired
UtentiRepository utentiRepository;
@GetMapping("/gab")
public String panda(Model model) {
return "panda";
}
这是模板解析器
@Bean
public SpringResourceTemplateResolver templatecssResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("classpath:/static/css/");
templateResolver.setSuffix(".css");
return templateResolver;
}
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(templatecssResolver());
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
registry.viewResolver(resolver);
}
您必须重写您调用的
addResourceHandlers(..)
方法,该方法实现WebMvcConfigurerAdapter
而不是作为bean(SpringResourceTemplateResolver
)
所以只需添加覆盖方法
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**")
.addResourceLocations("classpath:/static/css/");
}
在您的模板中使用
<link href="<c:url value="/css/style.css" />" rel="stylesheet">
或使用他们的叶子
<link th:href="@{/css/style.css}" />" rel="stylesheet">
如何在不使用 Spring Boot Web 的情况下告诉 Spring Boot 在哪里添加ResourceHandler,因为我使用 thymeleaf 将 html 转换为 pdf