软件定制开发供应商Required Integer[] parameter ‘xxx‘ is not present”报错的解决方案

背景

软件定制开发供应商在使用的时候,软件定制开发供应商前端同学说报错了。

自我调试了下,发现Required Integer[] parameter 'xxx' is not present

方法在后端使用的是post的方式。

因为删除只需要用到id

所以在传递参数的时候就使用了Integer[]

请求的时候,使用了@的方式。

方法如下:

  1. @ApiOperation(value = "删除")
  2. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  3. public CommonResult<String> delete(@RequestBody Integer[] ids){
  4. //TODO
  5. }

解决方案

调试了下,发现传递的时候,json串中不传递key是没有问题的。

例如传递参数如下:

[1,2,3,4]

因为前端同学已经固化。那怎么办呢?

只能修改后端了。

不算成功的办法

度娘了下,发现是需要请求参数的时候,说要使用@("ids[]")。

尝试了下,发现在x-www-form-urlencoded模式下,输入数组调用是没有问题的,后台可以获取到数据。

但是使用json格式传递的时候,还是会报找不到参数的问题。

怎么办?

应急办法

后来咬咬牙,把参数封装到对象里面,然后调用,发现问题解决了。

现在还没有搞懂问题的原因在哪里

修改后的代码如下

  1. @ApiOperation(value = "删除")
  2. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  3. public CommonResult<String> delete(@RequestParam DeleteRequest request){
  4. //TODO
  5. }
  6. @Data
  7. public class DeleteRequest extends BaseRequest {
  8. List<Integer> ids;
  9. }

但是我想应该是转换的时候出了一些问题,因为时间的关系,后续再去好好探究问题的根。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发