1.检查依赖声明
<!-- thymeleaf 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.检查thymeleaf配置
spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.check-template-location=true spring.thymeleaf.suffix=.html spring.thymeleaf.encoding=utf-8 spring.thymeleaf.servlet.content-type=text/html spring.thymeleaf.mode=HTML5 spring.thymeleaf.cache=false
3.检查@RestController
是否更改为@Controller
在Spring框架中,@Controller
和@RestController
注解都用于标记控制器类,但它们有不同的用途:
-
@Controller
:这个注解用于定义传统的Web控制器,它可以返回视图名称(例如,Thymeleaf或JSP页面的名称),Spring MVC会使用ViewResolver
来解析这些视图名称并渲染相应的页面。 -
@RestController
:这个注解是@Controller
和@ResponseBody
注解的组合,它表明控制器中的所有处理方法默认都会将返回值作为HTTP响应的body部分返回,并不会解析为视图名称。这在构建RESTful Web服务时非常有用,因为通常会返回JSON或XML等数据格式。
当你的控制器使用@RestController
时,你的方法返回的任何值都会直接作为HTTP响应的正文返回给客户端。所以如果你返回了一个字符串,比如"demo/view"
,这个字符串就会直接作为相应内容返回,而不会被解析为视图路径。
因此,当你把@RestController
改为@Controller
时,你告诉Spring MVC不要直接返回方法的响应体,而是需要对返回的字符串进行视图解析。这样,"demo/view"
就会被正确地解析为视图路径,进而Spring MVC就会查找名为"demo/view"
的视图模板(比如demo/view.html
),并渲染这个页面作为HTTP响应返回。