前端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,原因我不知道, 如果有大佬知道原因, 或者还有其他解决方案, 可以私信我, 欢迎批评与指正】