添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在前端和后端之间 传递数组 时,由于HTTP协议的限制,无法直接传递数组类型的参数。
请求参数需要被转换为字符串格式传递给后端,所以需要通过 JSON.stringify() 方法将 gradeIdArray 数组转换为一个 JSON 字符串,并将其作为参数传递给后端。

add(){ // 将选中的权限等级的 ID 转换为整数类型,并存储在一个数组中 let gradeIdArray = [] for (let i = 0; i < this.selectGradeArray.length; i++) { gradeIdArray.push(parseInt(this.selectGradeArray[i])) // 发送 POST 请求,将角色名称和权限等级的 ID 数组传递给后台 axios.post('/project/role/add', { roleName: this.addObj.name, gradeIdArray: JSON.stringify(gradeIdArray) }).then(resp => { if (resp.data === 'ok') { alert('添加成功') // 清空 this.addObj.name = '' this.selectGradeArray = [] } else { alert('添加失败')

在后端的控制器方法中,需要使用 @RequestBody 注解来接收前端传递过来的 JSON 数据,并将其转换成对应的 Java 对象

@PostMapping("add") public String add(@RequestBody Map<String, Object> params) { String roleName = (String) params.get("roleName"); String gradeIdArrayJson = (String) params.get("gradeIdArray"); ObjectMapper mapper = new ObjectMapper(); List<Integer> gradeIdList = null; try { gradeIdList = mapper.readValue(gradeIdArrayJson, new TypeReference<List<Integer>>() {}); } catch (JsonProcessingException e) { e.printStackTrace(); roleService.add(roleName, gradeIdList.toArray(new Integer[0])); return "ok";

使用 @RequestBody 注解来接收前端传递过来的 JSON 数据,并使用 Jackson 库中的 ObjectMapper 对象将其转换成一个 List<Integer> 对象。

在转换过程中,使用 TypeReference类来指定转换的目标类型为 List<Integer>。

然后,再将转换后的 List<Integer> 对象转换成一个 Integer 数组,并将其传递给 roleService.add() 方法进行处理。

因为@RequestBody只能使用一次,所以此时使用实体类User获取不到所有属性,此时我们需要创建一个UserDTO继承User,且给他加入其他传入参数属性。对于Map,值的类型建议设置为Object,这样可以使Map能接收各种类型的 数据 ,如 字符串 、数字、 数组 和对象等。 前端 传来的是一个 json 对象时:{'id'=1,'name'='ww'},可以用Map来获取。若 前端 传递 过来的 数据 刚好和我们的bean实体对象属性一致,则可以使用对象的形式接收。后台Controller。 前面我们说过,现在比较流行的开发方式为异步调用。前后台以异步方式进行交换,传输的 数据 使用的是 JSON ,所以 前端 如果发送的是 JSON 数据 后端 该如何接收? 对于 JSON 数据 类型,我们常见的有三种: json 普通 数组 ([“value1”,“value2”,“value3”,…]) json 对象({key1:value1,key2:value2,…}) json 对象 数组 ([{key1:value1,…},{key2:value2,…}]) 对于上述 数据 前端 如何发送, 后端 如何接收? JSON 普通 数组 后端 用split 方法 字符串 转化成 数组 2. json 数组 如 var json Array = [{name: ‘张三’, value: ‘18’}, {name: ‘李四’, value: ‘12’}] 前端 直接将 json 数组 传给 后端 当我们想要 前端 实现批量操作功能时(例如:勾选多个想要内容,再一键删除),可以把想要删除的内容的唯一标识(例如:ID)保存在一个 数组 中,接着通过Axios把此 数组 发送到 后端 后端 控制层用List集合接收,再进行实际的删除操作,最后达到我们想要的效果,那我们该怎么实现呢?