Spring MVC AJAX提交数组的解决办法

xiaoxiao2021-02-28  73

WEB框架采用Spring MVC,用AJAX提交数据时,提示如下错误:

{ timestamp: "2017-06-07 18:36:10", status: 500, error: "Internal Server Error", exception:"java.lang.NumberFormatException", message:"For input string: """ path:"/security/account/save" }

观察HTTP头部信息,发现提交数据如下:

id:8e36142e-f2a5-4c2d-a9e1-7e61f4757dce username:admin remarkName:系统管理员 enabled:true accountLocked:false roles[]:ec51190c-592a-4e41-add0-95683ed647c6 roles[]:910bc12e-27e6-4443-aa01-ae4d5f2694e2

很容易证明,错误就在“roles[]”上。 将测试数据改为如下格式,再次AJAX提交,数据转换成功

{ "roles[0]":"ec51190c-592a-4e41-add0-95683ed647c6", "roles[1]":"910bc12e-27e6-4443-aa01-ae4d5f2694e2" }

是的,你没有看错,Spring MVC需要的AJAX数据就是这个格式,于是很容易写出转换函数:

function encodeArray (name, value) { if(value instanceof Array) { let result = {} for(let i =0, len = value.length; i < len; i ++) { // ES6语法 result[`${name}[${i}]`] = value[i] } return result; } return '' }

示例代码如下:

let roles = encodeArray('roles', this.roles); _.assign(this, roles) delete this.roles // 提交数据 $.post(url, this, datas => { // 处理操作成功后的数据吧 })

结论

Spring MVC直接处理AJAX提交的数组

转载请注明原文地址: https://www.6miu.com/read-57465.html

最新回复(0)