use*_*458 5 java spring spring-mvc thymeleaf spring-boot
我在Stack Overflow上遇到了多次错误,但是似乎没有一种解决方案适合我。
基本上,我使用Thymeleaf 3运行Spring Boot 4,并且当我使用./gradlew bootRun在本地进行测试时,我的模板可以很好地加载。
但是,当我打包我的jar并尝试运行它时,在访问端点时,我总是收到此错误:
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
Run Code Online (Sandbox Code Playgroud)
我的模板都位于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;
}
}
Run Code Online (Sandbox Code Playgroud)
另外,如果我删除了上面的整个@Configuration类,它将仍然具有相同的错误
我的build.gradle中总是有百里香的东西
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么?谢谢!
我没有使用 Gradle,而是使用 Maven,所以我会尝试考虑一些可以帮助其他用户的观点。Spring boot 的版本在配置上可能略有差异,因此对于这个答案,请考虑 Spring boot 1.5.10。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>;
Run Code Online (Sandbox Code Playgroud)
有了这个依赖,thymeleaf 就会在资源/模板中查找 html。
@SpringBootApplication
@EntityScan(basePackageClasses = { Application.class })
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不想缓存模板,请在属性或 yaml 文件中告知这一点。
spring.thymeleaf.cache=false
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |