Spring Boot项目能否同时使用@Controller与@RestController?报错求助
Spring Boot 循环视图路径错误解决办法
问题根源
这个错误的本质是:Spring Boot找不到能解析视图的模板引擎,把你控制器返回的"index"当成了请求路径,导致请求/index再次触发同一个控制器方法,形成循环调用。
解决步骤
1. 引入Thymeleaf模板引擎依赖
因为你的HTML文件放在resources/templates目录下,Spring Boot需要模板引擎来识别并渲染这些页面,Thymeleaf是Spring Boot官方推荐的模板引擎,直接添加依赖即可:
Maven 项目(修改pom.xml)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Gradle 项目(修改build.gradle)
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
2. 确认文件结构与控制器正确性
- 确保你的HTML文件名为
index.html,且存放在src/main/resources/templates目录下 - 你的
PageController代码无需修改:
@Controller public class PageController { @GetMapping("/index") public String index() { return "index"; } }
引入Thymeleaf后,Spring Boot会自动配置视图解析规则:前缀为classpath:/templates/,后缀为.html,所以返回"index"会自动映射到templates/index.html。
3. RestController无需调整
你的PageRestController使用@RestController注解,会直接将返回对象序列化为JSON,和视图解析逻辑完全独立,不需要做任何修改。
验证
启动应用后:
- 访问
http://localhost:8080/index,应该能正常加载index.html页面 - 访问
http://localhost:8080/api/getUserData,会正常返回User对象的JSON数据
内容的提问来源于stack exchange,提问作者YourDaddyProgrammer
相关产品推荐
相关产品推荐

