You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot如何返回渲染后的HTML而非字符串?代码问题求助

问题解决:SpringBoot无法跳转页面并传递Model数据

问题根源

  • 方法上的@ResponseBody注解是核心问题:该注解会强制将方法返回值直接作为HTTP响应体输出(比如字符串、JSON),完全跳过Spring MVC的视图解析流程,所以浏览器只会显示你返回的"/main.html"字符串。
  • 换成@RestController也不行:这个注解等价于@Controller + @ResponseBody,所有方法默认都会返回响应体,同样无法触发页面跳转。

调整步骤

  1. 移除@ResponseBody注解:保留类上的@Controller(不要用@RestController),让Spring MVC执行视图解析逻辑。
  2. 确保模板引擎依赖存在:因为页面放在src/main/resources/templates下,这是Thymeleaf的默认视图路径,必须引入Thymeleaf依赖才能让Spring正确识别并渲染页面。
  3. 修正代码细节:补全变量类型声明,确保Service正确注入,返回视图名即可(无需加前缀后缀)。

修改后的代码示例

@Controller
@RequestMapping("/member")
public class OAuthController {

    // 注入你的业务服务类,确保已被Spring管理
    private final YourService service;

    // 构造方法注入(推荐方式)
    public OAuthController(YourService service) {
        this.service = service;
    }

    @GetMapping("/name")
    public String abcCallback(@RequestParam String code, Model model){ 
        String abc = service.getname(code); // 补全变量类型
        model.addAttribute("abc", abc);

        return "main"; // Spring会自动匹配templates目录下的main.html
    }
}

额外注意事项

  • 依赖检查:如果用Maven,需在pom.xml中添加Thymeleaf依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • 变量规范:原代码中abc未声明类型,会导致编译错误,必须补全类型(比如String abc)。
  • Service注入:确保YourService类上添加了@Service注解,让Spring容器能够识别并注入,避免空指针异常。

内容的提问来源于stack exchange,提问作者user20236531

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:50:28