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

来源:互联网 发布:linux 生成100mb文件 编辑:程序博客网 时间:2024/06/17 18:56

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-7e61f4757dceusername:adminremarkName:系统管理员enabled:trueaccountLocked:falseroles[]:ec51190c-592a-4e41-add0-95683ed647c6roles[]: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提交的数组

原创粉丝点击