spring mvc 提交数组等复杂类型

spring mvc 提交数组等复杂类型

使用jquery提交,比如monthIncome的值是一个数组,在Java里用

request.getParameterValues("monthIncome");取不到值,要这样才行

request.getParameterValues("monthIncome[]")。

如果使用struts又不一样,这时在提交前加上

$.ajaxSettings.traditional = true;就不会出错,见

http://www.360docs.net/doc/info-3ea14898d5bbfd0a795673c6.html/questions/3508550/http-array-parameters-with-struts-2-via-an-ajax-ca ll:

下面来看spring mvc

get 方式

提交{param: [1,2,3]},在浏览器下面看到的提交参数有

param[]:1

param[]:2

param[]:3

接收@RequestParam(value = "param[]") int[] param

或request.getParameter("param"),可以正常接收数组

String类型的param也可以,得到就是用逗号拼起来的字符串"1,2,3"

提交{param: [{a:1, b:"yellow"},{a:2, b:"red"},{a:3, b:"green"}]}

param[0][a]:1

param[0][b]:yellow

param[1][a]:2

param[1][b]:red

param[2][a]:3

param[2][b]:green

报400错误,在$.ajax请求前加上这句

$.ajaxSettings.traditional = true;

在浏览器下面看到的提交参数变成

param:[object Object]

param:[object Object]

param:[object Object]

同样报报400错误

想提交的对象是

var requesParam = {param: [{a:1, b:"yellow"},{a:2, b:"red"},{a:3, b:"green"}]};

JSON.stringify 把一个对象转换成json字符串,JSON.parse 把一个json字符串解析成对象。使用JSON.stringify(requesParam)这样的提交方式是没有什么改善的。

有提到另一个序列化的库

use gserializer:

http://www.360docs.net/doc/info-3ea14898d5bbfd0a795673c6.html.au/articles/programming/javascript-serialization.php

the code in google :

http://www.360docs.net/doc/info-3ea14898d5bbfd0a795673c6.html/p/gserializer/

相关文档