阅读 1939

【Java】前端传一个数组或者集合后台怎么接受(案例详解)

一、基础学习

hello本期以实际案例的形式分享Java基础之 Java后台接受数组和集合的案例,分享给初学者

首先我们模拟创建一个user的实例

/**  * @program: demo  * @description: 普通用户  * @author: 辰兮要努力  * @create: 2021-10-03 11:04  */ @Data public class User {     private String id;     private String name;     private Integer age; } 复制代码

创建一个公共的返回值的帮助类

import lombok.Data; /**  * @program: demo  * @description: 封装公共的返回值  * @author: 辰兮要努力  * @create: 2021-10-03 11:05  */ @Data public class Result<T> {     private static final long serialVersionUID = 1L;     private Integer code;     private String msg;     private T data;     public static Result fail() {         Result Result = new Result();         Result.setCode(1);         Result.setMsg("服务器错误!!!");         return Result;     }     public static Result fail(String msg) {         Result Result = new Result();         Result.setCode(1);         Result.setMsg(msg);         return Result;     }     public static <T> Result success(T data) {         Result Result = new Result();         Result.setCode(0);         Result.setData(data);         return Result;     }     public static Result success() {         Result Result = new Result();         Result.setCode(0);         Result.setMsg("操作成功!");         Result.setData("success");         return Result;     } } 复制代码

业务场景一:前端传对象集合后台如何接受?

[ {    "id":"1",    "name":"辰兮",    "age":"22"      }, {    "id":"2",    "name":"辰兮要努力",    "age":"23"      } ] 复制代码

后台接受方式

@RequestBody List<User> userList 复制代码


业务场景二:前端传数组后台如何接受?

["2021","2022"] 复制代码

后台接受方式

@RequestBody List<String> list 复制代码


简单的写一个controller层模拟业务操作:重在查看入参

/**  * @program: demo  * @description: 前后端传值交互案例  * @author: 辰兮要努力  * @create: 2021-10-03 11:09  */ @RestController @RequestMapping("/user") public class UserController {     //打印日志     private static final Logger logger = LoggerFactory.getLogger(UserController.class);     /**      * 前端传对象集合 后端用集合接      * @param userList      * @return      */     @PostMapping("/saveList")     public Result saveUserList(@RequestBody List<User> userList) {         logger.info("传入的参数是{}",userList);         //模拟逻辑层做一个入参校验         if (CollectionUtils.isEmpty(userList)){             return Result.fail();         }         return Result.success();     }     /**      * 业务场景:前端传入单独一个数组      * @param list      * @return      */     @PostMapping("/saveUserIds")     public Result saveStrings(@RequestBody List<String> list) {         logger.info("传入的参数是{}",list);         //模拟逻辑层做一个入参校验         if (CollectionUtils.isEmpty(list)){             return Result.fail();         }         return Result.success();     } } 复制代码

业务场景一:前端传对象的集合后端就用对应的list接受即可

image.png

业务场景二:前端传对应的数组后台接受

image.png

来看看控制台打印的参数

image.png

使用如上的方法即可成功接受前端传入的集合或者数组


二、进阶学习

你是否遇到过这样的问题,就是前端除了传一个集合外,还要传一个字符串或者数字等属性?

业务场景:传入的集合代表要操作的数据,传入的字符串,字符串/数字 不同 走不同的业务逻辑等

入参案例如下

{ "userList":[{"id ":"1","name":"辰兮","age":"22"},{"id":"2","name":"辰兮要努力","age":"23"}],         "open":1 } 复制代码

接受方式:创建一个对象接受

/**  * @program: demo  * @description: 用户对象接受类  * @author: 辰兮要努力  * @create: 2021-10-03 11:04  */ @Data public class UserVo {     private List<User> userList;     private Integer open; } 复制代码

实践案例如下

/**  * @program: demo  * @description: 前后端传值交互案例  * @author: 辰兮要努力  * @create: 2021-10-03 11:09  */ @RestController @RequestMapping("/user") public class UserController {     //打印日志     private static final Logger logger = LoggerFactory.getLogger(UserController.class);     /**      * 业务场景:前端传一个数组➕一个字符串或者数字等      * @param userVo      * @return      */     @PostMapping("/saveUserVo")     public Result saveUserVoList(@RequestBody UserVo userVo) {         logger.info("传入的参数是{}",userVo);         return Result.success();     } } 复制代码

我们可以debug查看一下入参,很清晰的可以看到前端传入的参数

image.png

前后端传参,最重要的还是统一好对应的参数属性名称,传参方式等,提前确认好,开发效率会大幅提高

image.png

解答:前端除了传一个集合外,还要传一个字符串或者数字等属性,我们创建一个VO对象来接受即可解决如上的问题


hello,你好 我是辰兮,后续我会继续整理一下Java基础的相关案例,希望可以帮助到更多的初学者,欢迎学习、分享、交流、打卡!


作者:辰兮要努力
链接:https://juejin.cn/post/7028933591316824095

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐