SpringMVC list参数问题

    前端用ajax请求并传参,后台用SpringMVC接收参数,参数为list的形式如,List<[color=red]User[/color]> users,

前台传的格式形如 {users:{{name:"Tom",age:12},{name:"Petter",age:14}}}(但不确定是不是这么传),
请问应该怎么实现?

    我上网查过并测试成功的有,1.传单个参数,2.单个对象(用json传),3.甚至传String的数组(String[] ary)都可以,但是没有找到可以传对象的list或数组形式的,希望知道的速速回复,谢谢了。

MVC的List里面只能是简单的数据类型,如Integer,String.
可以不用List,直接传个简单的String(json),
把数据封装为json即可。

参考: [url]http://www.iteye.com/problems/38116[/url]

用JSON。。。JSON也支持list其实对JS来说List和数组是一回事。。。。

应该无法传递对象。毕竟http最终的传递还是 url?k=v&k1=v1&k3=v3..的形式,

你可以将 {users:{{name:"Tom",age:12},{name:"Petter",age:14}}}整个字符串传过去,然后根据你的规则将其变成list。因此不管是json还是其他什么其实传输的都是字符串而已。

比如struts 之所以可以使用如: user.name user.age形式的参数到后台,并且可以直接拿到user对象,都是由于其框架提供的对请求相应参数进行封装的结果。

要直接使用http请求传递对象是不太可能。楼主可在查查。祝好运了。

一般都是传一个JSON字符串,后台拿到后解析成对象的

要传也是这样才对:[code="javascript"]{users:[{name:"Tom",age:12},{name:"Petter",age:14}]}[/code]

前台到后台 一般都是传一个字符串。至于这个字符串什么形式,根据实际场景而定。
JOSN是主流的也是也是一种高效的形式。你如果想直接在前后台那得用到RMI(Remote Method Invoke)远程调用技术。或者EJB远程调用。这主要取决于你前台的客户端是不是Swing 是Swing的话 就可以直接采用远程调用技术。将参数对象持久化后直接传到远程服务器。不需要转化。一般的web开发是在前台间数据以一定的字符格式加工包装后传到后,再将字符数据转化为java对象,再进行业务逻辑处理 。

对于 JSON 来说, 传单个参数, 单个对象, 对象数组, 都是一样的.
前台用 JSON javascript lib 转换成 JSON 发送,
后台找个 JSON 的 lib 转换成对象就可以了...

这样的lib 实在太多...随便网上找一个就OK

前台可以传一个JSON对象格式的字符串,后台再用jsonObj将这个字符串转换成javaBean对象。前台的字符串可以用jquery的serializeArray方法实现

String users = {users:{{name:"Tom",age:12}{name:"Petter",age:14}}}

利用阿里巴巴的fastjson.jar
User user = JSON.parseObject(users,方法名.class);
这样就生成了user对象,然后你再通过user.getXX()得到各个属性放入list中就可以了。。希望对你有帮助。。

我也来回复,其实你可以写一个JAVABEAN ,把List users 作为该JAVAbean的参数;这样就可以提交表单后台转换为JAVABEAN ,从JAVABEAN中取出LIST. :wink:

public class JAVABEAN {

List users = new ArrayList() ;

//get set 方法。。。。
}



@RequestMapping 
public @ResponseBody
String saveGridExtendMsg(JAVABEAN javabean)  {
    logger.debug("save gridExtendMsgs : " + gridExtendMsgs );
    //gridMsgInfoService.saveGridExtendMsg(gridMsgModel.getGridExtendMsgs()); //gridMsgModel.getGridExtendMsgs()
    return "1";
}