前端formdata传String数组后端接收空字符串的size为0

 前端formdata传一个String数组, 后端用List接收, 如果是传长度为1的空字符串, 后端接收到的是size为0. 前端传的:

 后端接收到的就是size为0, 然后我用postman试也是这样:

如你所见, 此时接收到的List列表size为0.

后来我试了一下, 传两个空的, 如图所示:

这个时候后端接收到的size是2.

但是, 业务场景需要, 就是要支持一个size为1的空字符串.

有个概念一定要知道:

String[] str = {""};
String[] str1 = {};
List<String> list = new ArrayList<>();
System.out.println("str.length: "+str.length);
System.out.println("str1.length: "+str1.length);
System.out.println("list.size(): "+list.size());
list.add("");
System.out.println("after add empty string, list.size(): "+list.size());
list.add(null);
System.out.println("after add null, list.size(): "+list.size());

/** 运行结果:
  str.length: 1
  str1.length: 0
  list.size(): 0
  after add empty string, list.size(): 1
  after add null, list.size(): 2
 */ 

然后我尝试用别的方法, 不用List接, 用String数组接, 像这样的:

 传长度为1空字符串, 传过来的cardIds为{}, 数组的长度为0. 效果是一样的.

后来我发现, 如果formdata传String数组过来, 后端直接用一个String接收, 如下:

 是可以支持你需要的这种业务场景的. 要注意一下, 它是逗号分隔的. 你解析成数组或者List就可以了.

List<String> list = Arrays.asList(cardIds.split(",",-1));

【前端传size为1的空字符串后端接收size为0,原因我不知道, 如果有大佬知道原因, 或者还有其他解决方案, 可以私信我, 欢迎批评与指正】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值