缘起

日前在搭建项目的时候使用的是SpringBoot+Thymeleaf框架,在访问页面的时候报错

org.thymeleaf.exceptions.TemplateInputException: Error resolving template xx,Template might not exist or might not be accessible

基本配置如下:

yml:

thymeleaf:
prefix: classpath:/templates/view/
suffix: .html
mode: HTML5
encoding: UTF-8
servlet:
content-type: text/html
cache: false

pom.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

controller

@RequestMapping("index")
public String index(Model model) {
System.out.println("index");
return "helloworld";
}

html

SpringBoot+Thyemleaf报错:Error resolving template Template might not exist or might not be accessible_html

最终解决方案

是因为在pom中配置了文件过滤

<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yaml</include>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.vm</include>
</includes>
<filtering>true</filtering>
</resource>

可以看到这边是没有包含html的,改成如下配置就可以了

<resource>
<directory>src/main/resources</directory>
<!--<includes>-->
<!-- <include>**/*.yaml</include>-->
<!-- <include>**/*.yml</include>-->
<!-- <include>**/*.properties</include>-->
<!-- <include>**/*.vm</include>-->
<!--</includes>-->
<filtering>true</filtering>
</resource>

或者加上html

<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yaml</include>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.vm</include>
<include>**/*.html</include>
</includes>
<filtering>true</filtering>
</resource>