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

Spring Boot不使用@ResponseBody注解返回纯文本的问题咨询

错误原因分析

默认@Controller类的方法返回字符串时,Spring会将返回值作为视图名传递给视图解析器处理,你引入了Thymeleaf模板引擎,因此框架会尝试查找名为This is a plain Text的模板文件,找不到就会抛出TemplateInputException异常。

以下是不需要加@ResponseBody就能返回纯文本、同时支持灵活自定义返回类型的两种方案:


方案1:使用ResponseEntity作为返回值

ResponseEntity是Spring原生提供的全响应配置类,包含响应状态码、响应头、响应体的完整配置能力,无需添加@ResponseBody注解即可直接生效,可动态调整返回类型。

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;

@GetMapping("/test/message")
public ResponseEntity<String> Message() {
    // 可根据业务逻辑动态修改contentType,支持TEXT_PLAIN、TEXT_HTML、APPLICATION_JSON等任意类型
    return ResponseEntity.status(HttpStatus.OK)
            .contentType(MediaType.TEXT_PLAIN)
            .body("This is a plain Text");
}

方案2:直接操作HttpServletResponse

直接注入HttpServletResponse对象写入响应内容,所有响应规则完全自主控制,自由度最高。

import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@GetMapping("/test/message")
public void Message(HttpServletResponse response) throws IOException {
    // 自定义响应状态码、内容类型、编码等所有参数
    response.setStatus(HttpServletResponse.SC_OK);
    response.setContentType("text/plain;charset=UTF-8");
    PrintWriter writer = response.getWriter();
    writer.write("This is a plain Text");
    writer.flush();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:51:00