thymeleaf 3 spring 5加载css

问题描述 投票:0回答:2

我正在尝试同时配置

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);
}
css spring spring-mvc spring-boot thymeleaf
2个回答
1
投票

您必须重写您调用的

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">

0
投票

如何在不使用 Spring Boot Web 的情况下告诉 Spring Boot 在哪里添加ResourceHandler,因为我使用 thymeleaf 将 html 转换为 pdf

© www.soinside.com 2019 - 2024. All rights reserved.