在使用`qs`将对象转换成FormData格式的字符串时,
如果原对象中有数组,默认情况下,数组数据会被转换成如下格式:
roleIds%5B0%5D=1&roleIds%5B1%5D=2
以上代码中,‘%5B’表示 ` [ `,‘%5D’表示 ` ] `。
其实我们可以在使用`qs`时对其进行配置,以设置数组数据的格式
例如在当前代码中,当我们需要提交一个forData数组到服务器时:
我们对qs进行配置:添加了属性值 `arrayFormat`:`repeat`
let formData = this.qs.stringify(this.ruleForm, {'arrayFormat': 'repeat'});
关于 arrayFormat 属性的三种值对数组数据的格式的影响:
当`arrayFormat`属性的值为`repeat`时,FormData格式为:
roleIds=1&roleIds=2&roleIds=3
当`arrayFormat`属性的值为`indices`时,FormData格式为:
roleIds%5B0%5D=1&roleIds%5B1%5D=2
当`arrayFormat`属性的值为`brackets`时,FormData格式为:
roleIds%5B%5D=1&roleIds%5B%5D=2
其实,无论使用以上哪种方式,Spring MVC框架都可以正常接收到数组值,一般设置为`repeat`就行了!