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

Spring Boot中@RequestBody字符串空格转为+的问题求助

问题原因及解决方法

原因分析

你遇到的情况并非Spring Boot直接转换空格,而是前端请求采用了application/x-www-form-urlencoded编码格式——这种格式会自动将空格转为+,部分编码工具还会额外补全=符号。而你用@RequestBody String接收时,Spring Boot会直接返回原始的表单编码内容,不会自动解码。

解决方法

以下是几种可行的处理方案:

1. 调整前端请求格式

让前端将请求的Content-Type改为text/plain或application/json,这样字符串会以原始形式传递,不会被表单编码。比如用JSON格式发送:

"Ekin Frontend"

2. 后端手动解码

如果前端无法修改请求格式,后端可以手动对接收的字符串做URL解码:

import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

@PostMapping("/error")
public boolean addError(@RequestBody String errorMsg) {
    // 先去掉末尾多余的=,再解码
    String decodedMsg = URLDecoder.decode(errorMsg.replaceAll("=$", ""), StandardCharsets.UTF_8);
    // 后续业务逻辑处理
    ...
}

3. 改用@RequestParam接收(适合表单场景)

如果前端确实是通过表单提交单个参数,可将接口改为@RequestParam接收,Spring Boot会自动完成解码:

@PostMapping("/error")
public boolean addError(@RequestParam String errorMsg) {
    ...
}

注意这种方式需要前端将参数放在表单参数中(如errorMsg=Ekin Frontend),而非直接把字符串放在请求体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:29:57