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

Spring中如何将@RequestParam绑定到对象(GET映射场景)

Spring中如何将@RequestParam绑定到对象(GET映射场景)

嘿,我来给你捋捋在Spring的GET请求里,怎么把参数绑定到对象上~你现在写的代码其实已经踩对节奏了,不过还有几个细节要注意哦:

首先,你当前的代码基础完全没问题:Controller方法里直接把QuoteRequest作为参数,不需要给这个参数加@RequestParam注解,Spring MVC会自动帮你把请求参数和POJO的属性做绑定,但要满足两个前提:

  • POJO必须有无参构造函数(你已经加了@NoArgsConstructor,完美踩中要求)
  • POJO的属性要有对应的getter和setter方法(你也加了@Getter@Setter,这步也到位了)

接下来说说请求参数该怎么传:
因为你的属性是List<String> topics,最标准的传参方式是在URL里重复参数名,比如:
/quotes?topics=java&topics=spring&topics=database
这样Spring会自动把这三个topics参数的值收集到List集合里,直接就能在request.getTopics()里拿到。

如果你们团队习惯用逗号分隔的方式传参,比如/quotes?topics=java,spring,database,那你需要给topics属性加个@RequestParam注解指定参数名,修改后的POJO代码如下:

@Getter @Setter @AllArgsConstructor @NoArgsConstructor
public class QuoteRequest {
    @Size(min = 1, max = 5)
    @RequestParam("topics")
    private List<String> topics;
}

这种方式也能让Spring自动把逗号分隔的字符串拆成List元素。

最后再确认下Controller的写法,就保持你现在的样子就行:

@GetMapping("/quotes")
void getQuotes(QuoteRequest request) {
    // 这里直接调用request.getTopics()就能获取到绑定好的参数啦
}

要是之后给QuoteRequest加其他属性,比如Integer pageSize,只要请求里传pageSize=10,Spring也会自动帮你绑定到对应的属性上,只要参数名和属性名一致就行。

备注:内容来源于stack exchange,提问作者menteith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:18:22