Java 当springboot打包jar时,Thymeleaf不会加载模板
我遇到了一个关于堆栈溢出的错误,我已经见过多次了,但是没有一个解决方案适合我 基本上,我用Thymeleaf 3运行Spring Boot 4,当我用./gradlew bootRun进行本地测试时,我的模板加载得很好 但是,当我打包jar并尝试运行它时,当我访问端点时,总是会出现以下错误:Java 当springboot打包jar时,Thymeleaf不会加载模板,java,spring,spring-mvc,spring-boot,thymeleaf,Java,Spring,Spring Mvc,Spring Boot,Thymeleaf,我遇到了一个关于堆栈溢出的错误,我已经见过多次了,但是没有一个解决方案适合我 基本上,我用Thymeleaf 3运行Spring Boot 4,当我用./gradlew bootRun进行本地测试时,我的模板加载得很好 但是,当我打包jar并尝试运行它时,当我访问端点时,总是会出现以下错误: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/login", template might not exist or might not be accessible by any of the configured Template Resolvers
我的模板都位于src/main/resources/templates/下,是以.html结尾的文件,例如login.html
这是我的@Configuration类,用于为Thymeleaf配置模板解析器:
@Configuration
@EnableWebMvc
@ComponentScan
public class TemplateConfig extends WebMvcConfigurerAdapter {
@Bean
@Description("Thymeleaf template resolver serving HTML 5")
public ClassLoaderTemplateResolver templateResolverClassLoader() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("templates/");
templateResolver.setCacheable(false);
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(2);
return templateResolver;
}
@Bean
public ServletContextTemplateResolver templateResolverServletContext() {
final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
@Description("Thymeleaf template engine with Spring integration")
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
final Set<TemplateResolver> templateResolvers = new HashSet<>();
templateResolvers.add(templateResolverClassLoader());
templateResolvers.add(templateResolverServletContext());
templateEngine.setTemplateResolvers(templateResolvers);
return templateEngine;
}
@Bean
@Description("Thymeleaf view resolver")
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
return viewResolver;
}
}
我错过了什么?谢谢 > P>我没有和Gradle合作,但是Maven,所以我会尝试考虑一些点,一旦可以帮助其他用户。 Spring Bug的版本在配置上几乎没有差异,所以对于这个答案,考虑Spring Boo1.5.10.
org.springframework.boot
弹簧启动装置
;
有了这个依赖项,thymeleaf就可以在资源/模板中查找html了
@springboot应用程序
@EntityScan(basePackageClasses={Application.class})
公共类应用程序
{
公共静态void main(字符串[]args)
{
SpringApplication.run(Application.class,args);
}
}
compile("org.springframework.boot:spring-boot-starter-thymeleaf")