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

Spring Boot中model.addAttribute无法正确显示消息的问题

问题解决方案

核心问题分析

你遇到的两个现象直接相关:

  • 使用@RestController时,Spring会把控制器方法的返回值直接作为HTTP响应体返回,所以返回字符串"message"时,页面就直接显示这个字符串,不会去查找对应的Thymeleaf模板文件。
  • 使用@Controller启动失败,大概率是因为项目缺少视图渲染相关依赖(比如Thymeleaf),导致Spring无法找到视图解析器。

步骤1:修正控制器注解

将@RestController替换为@Controller,这样Spring会把方法返回的字符串当作视图名称,去查找对应的模板文件:

package com.example.MySecondSpringBootProject.Controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.Controller;

@Controller
public class HomeController {

    @GetMapping("/")
    public String hello(){
        return "hello";
    }

    @GetMapping("/message")
    public String message(Model model) {
        model.addAttribute("message", "This is a custom message");
        return "message";
    }
}

步骤2:确保添加Thymeleaf依赖

如果是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'

添加依赖后,重新构建并启动项目。

验证结果

启动项目后访问localhost:8080/message,Thymeleaf模板会渲染message.html,并将model中的message值填充到页面的<h1>标签中,最终显示自定义消息。

额外说明

  • @RestController = @Controller + @ResponseBody,适合编写RESTful接口,返回JSON/XML等数据;@Controller适合编写MVC页面控制器,返回视图名称。
  • 你尝试的两种写法(添加@RequestParam或额外参数)都是多余的,因为你不需要接收前端参数,只需要往Model中添加后端自定义数据即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:01:13