springboot 传List参数

最近项目有个需求,前台需要传list参数请求controller接口,一开始直接使用ResponseBody注解,但实践下来发现参数没有传到controller。

现将处理方式记录如下:

 1、前台

将list参数转换为json字符串: JSON.stringify(list)

 var list=[];
 list.push({
      "id":1,
      "type":2,                  
  });
 list.push({
      "id":2,
      "type":3,                  
  });
this.$http.post("/demo/testListParam",{"jsonStr":JSON.stringify(list),"id":parseInt(this.id),"reason":this.reason} , {
            }).then(res => {
              if (res.resultCode == 200 ) {
                console.log("data:"+res.data);
               
              } else {
                setTimeout(() => {
                  this.instance("error", "提示",  res.message);
                }, 500);
              }
            });

2、controller

通过String拿到json字符串,再将json字符串转为List.

StAdjust类有字段id、reason

Demo.java字段有:id,

@RequestMapping(value = "/demo/testListParam", method = RequestMethod.POST)
@ResponseBody
public ResponseVO<Map<String,Object>> test(StAdjust stAdjust, @RequestParam("jsonStr")String listJSON) {
    
    List<Demo> demoList = JSON.parseArray(listJSON,Demo.class);

 }

 

### 回答1: 在Spring Boot中接收List参数,需要在控制器方法的参数中使用@RequestParam注解,并将参数名称设置为要接收的参数名称。例如,如果要接收名为"ids"的List参数,可以使用以下代码: ``` @RequestMapping(value = "/example", method = RequestMethod.GET) public String example(@RequestParam("ids") List<Integer> ids) { // Do something with the list of ids } ``` 如果请求参数是这样的:/example?ids=1&ids=2&ids=3,那么控制器方法中的ids列表将包含整数1、2和3。 ### 回答2: Spring Boot是一种快速构建Spring应用程序的框架,它提供了许多便于快速开发的组件,其中包括处理List参数的方式。在Spring Boot中接收List参数的方式主要有以下两种: 1. 使用@RequestParam注解 @RequestParam注解用于从请求参数中获取值,可以将请求参数映射到控制器方法的参数中。当需要接收List类型的参数时,可以使用@RequestParam注解,并在注解内指定参数名和数据类型。例如: ``` @PostMapping("/users") public void createUser(@RequestParam("userIds") List<Integer> userIds) { // 处理userIds } ``` 在以上示例中,使用@RequestParam注解声明了一个List类型的参数userIds,Spring Boot会自动将入的参数转换为List<Integer>类型并入控制器方法中。如果请求参数包含多个值,则Spring Boot将自动将它们合并为一个List对象。 2. 使用@RequestBody注解 @RequestBody注解用于从请求体中获取请求数据,并将数据转换为指定的Java对象。当需要接收List类型的参数时,可以使用@RequestBody注解,并使用泛型来指定List中的元素类型。例如: ``` @PostMapping("/users") public void createUsers(@RequestBody List<User> users) { // 处理users } ``` 在以上示例中,使用@RequestBody注解声明了一个List类型的参数users,并使用泛型指定List中元素的类型为User。Spring Boot会自动将请求体中的数据转换为List<User>类型的对象,并入控制器方法中。需要注意的是,在使用@RequestBody注解时,请求数据必须为JSON格式。 ### 回答3: Spring Boot是一个非常流行的Java开发框架,它提供了很多便捷的功能和特性,能够帮助开发者快速构建出高质量的Web应用程序。当开发Web应用程序时,有时需要接收一些参数,如果这些参数List类型的话,Spring Boot也能够支持接收这些参数。下面将详细介绍如何在Spring Boot中接收List类型的参数。 一、使用@RequestParam注解来接收List参数 在Spring Boot中,可以使用@RequestParam注解来接收请求参数,当接收List类型的参数时,可以使用[]或者List<>来指定参数名,如下所示: @GetMapping("/list") public String handleListRequest(@RequestParam("ids[]") List<Integer> ids) { System.out.println(ids); return "success"; } 当客户端向"/list"发送请求时,Spring Boot会自动将请求参数中名为"ids[]"的参数解析成一个List<Integer>类型的变量,将每个参数值转换成对应的Integer类型放入list中。需要注意的是,如果使用@RequestParam接收List类型的参数时,参数名必须以[]结尾。 二、使用@RequestPart注解来接收List参数 除了@RequestParam注解,Spring Boot还支持使用@RequestPart注解来接收List类型的参数,该注解可以用于上文件和发送二进制数据等场景。当接收List类型的参数时,可以使用[]或者List<>来指定参数名,使用List类型的参数名时,可以省略[]。如下所示: @PostMapping("/list") public String handleListRequest(@RequestPart("ids[]") List<Integer> ids) { System.out.println(ids); return "success"; } 当客户端向"/list"发送POST请求时,Spring Boot会自动将请求参数中名为"ids[]"的参数解析成一个List<Integer>类型的变量,将每个参数值转换成对应的Integer类型放入list中。 总之,在Spring Boot中接收List类型的参数非常简单,只需使用@RequestParam或@RequestPart注解,根据参数名加上[]或者List<>即可。使用这些注解可以帮助我们快速解析请求参数并自动转换成对应的Java类型,提高开发效率和代码可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值