在前端和后端之间传递数组时,由于HTTP协议的限制,无法直接传递数组类型的参数。
请求参数需要被转换为字符串格式传递给后端,所以需要通过 JSON.stringify() 方法将 gradeIdArray 数组转换为一个 JSON 字符串,并将其作为参数传递给后端。
add(){// 将选中的权限等级的 ID 转换为整数类型,并存储在一个数组中let gradeIdArray = []for (let i = 0; i {if (resp.data === 'ok') {alert('添加成功')// 清空this.addObj.name = ''this.selectGradeArray = []} else {alert('添加失败')}});}
在后端的控制器方法中,需要使用 @RequestBody 注解来接收前端传递过来的 JSON 数据,并将其转换成对应的 Java 对象
@PostMapping("add")public String add(@RequestBody Map params) {String roleName = (String) params.get("roleName");String gradeIdArrayJson = (String) params.get("gradeIdArray");ObjectMapper mapper = new ObjectMapper();List gradeIdList = null;try {gradeIdList = mapper.readValue(gradeIdArrayJson, new TypeReference<List>() {});} catch (JsonProcessingException e) {e.printStackTrace();}roleService.add(roleName, gradeIdList.toArray(new Integer[0]));return "ok";}
使用@RequestBody 注解来接收前端传递过来的 JSON 数据,并使用 Jackson 库中的 ObjectMapper 对象将其转换成一个 List 对象。
在转换过程中,使用TypeReference类来指定转换的目标类型为 List。
然后,再将转换后的 List 对象转换成一个 Integer 数组,并将其传递给 roleService.add() 方法进行处理。