springMVC绑定json参数之二(2.2.3)

二、springmvc 接收不同格式的json字符串

4).格式四:json传递复杂对象(对象中有属性,还有List)

复杂对象:

package testVO;

import java.util.List;

public class Test {

    private List<User> uu;
    private String jsonObjName;
    private Integer id;

    public String getJsonObjName() {
        return jsonObjName;
    }

    public void setJsonObjName(String jsonObjName) {
        this.jsonObjName = jsonObjName;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<User> getUu() {
        return uu;
    }

    public void setUu(List<User> uu) {
        this.uu = uu;
    }

}

其中User中还有如下属性(有一个User[]属性来接收的,下一节会将之变成List[]进行测试):

    private String userName;
    private String address;
    private User[] users;

前台构造复杂对象传递:

test = function () {
        //创建复杂的js对象
        var test = {};
        //给对象加属性(下面两种方式),名字要与后台复杂对象属性名一致
        test["jsonObjName"] = "jsonTest1";
        test.id = 30;
        //创建复杂属性对象List<User>,list在js中都是数组
        var userList = [];
        var user1 = {};
        user1["userName"] = "u1";
        user1["address"] = "add1";

        //创建user中的User[]属性对应的js对象
        var userattr = [];
        var user2 = {};
        user2["userName"] = "u2";
        user2["address"] = "add2";
        userattr.push(user2);
        //User对象中有一个变量名为users的数组,private User[] users;这里就是加入该属性
        user1["users"] = userattr;
        userList.push(user1);

        //复杂属性加入到js对象中
        test["uu"] = userList;

        //传递构造的js到后台
        jQuery.ajax({
            url : cur_url+"/weekly/test",
            type : ‘post‘,
            data : JSON.stringify(test),
            dataType : ‘json‘,
            contentType:‘application/json;charset=utf-8‘,
            success : function (data, textStatus) {
                console.info(data);
                alert("test success!");
            },
            error:function(){
                alert("test error!");
            }
        });
    };

后台接收:

@RequestMapping("/test")
        @ResponseBody
        public List<User> test(@RequestBody Test tt) {
            for (User user : tt.getUu()) {
                 System.out.println("user:" + user);
                 System.out.println("userName:" + user.getUserName());
                 System.out.println("address:" + user.getAddress());
                 User[] attr = user.getUsers();
                 for (int i = 0; i < attr.length; i++) {
                    System.out.println("attr>>>" + attr[i]);
                    System.out.println("attr_userName>>>" + attr[i].getUserName() );
                    System.out.println("attr_address>>>" + attr[i].getAddress());
                }
            }

            return tt.getUu();

         }

这样可以正常绑定
下一节验证后台中复杂对象中用List和数组接收效果是否一致。

时间: 2024-07-29 00:54:45

springMVC绑定json参数之二(2.2.3)的相关文章

springMVC绑定json参数之二(2.2.1)

二.springmvc 接收不同格式的json字符串 2.扫盲完了继续测试springmvc 接收不同格式的json字符串 1).格式一:json简单数组对象 前台两种传递方式: 方式一(需要拼接json字符串): 1 test = function () { 2 var test = '[{"userName":"test11","address":"gz11"},' + 3 '{"userName":&

springMVC绑定json参数之一

一.SpringMVC @RequestBody接收Json对象字符串 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串.同时ajax请求的时候也要指定dataType: "json",content

springmvc 接受json参数的坑

构造json数据时候js对象中的值 一定要用 "" 双引号,不能用单引号,因为转成字符串后,到后台进行解析时,因为java认为单引号是单字符 ,转不成对应的字符串,所以会报错! 如下正确: function insertByEntity() { var url = "/tuser/insertByEntity"; var entity = { nickname: "nickname", realname: "realname"

请求参数的绑定 请求参数乱码问题

绑定的机制 表单中请求参数都是基于 key=value 的 SpringMVC 绑定请求参数的过程是通过   把表单提交请求参数,作为控制器中方法参数   进行绑定的 例如: <a href="account/findAccount?accountId=10">查询账户</a> 中请求参数是:   accountId=10 /** * 查询账户 * @return */ @RequestMapping("/findAccount") publ

springmvc接收json注意事项

在以前使用SpringMvc框架时,在接受json字符串时碰到了一些奇怪的问题.这里记录下来,方便以后查阅. 1. data 里写json数据 , 如果该json数据没有被单(双)引号包住, 则传到后台其实也是key=value的形式 2.  data 里写json数据 , 如果该json数据被单(双)引号包住, 则传到后台才是json 3. SpringMvc接收json参数时的注意事项 (1) json必须是标准json(2) 必须指定contentType为:"application/js

springMVC学习(5)-参数绑定

接着上一集,记录参数绑定的过程: springmvc中,接收页面提交的数据是通过方法形参来接收: 一.默认支持的类型: 在controller形参中添加如下类型的参数处理适配器会默认识别并进行赋值: HttpServletRequest.HttpServletResponse.HttpSession. Modal/ModalMap(Model和ModelMap的效果一样,如果直接使用Model,springmvc会实例化ModelMap) 二.简单类型的绑定: 通过@RequestParam对简

[Spring MVC] - SpringMVC的各种参数绑定方式

SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post"> <input name="count" value="10" ty

【SpringMVC学习05】SpringMVC中的参数绑定总结

众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springmvc中如何接收前台页面的参数,即springmvc中的参数绑定问题. 1. 参数绑定的过程 我们可以回忆一下,在struts2中,是通过在Action中定义一个成员变量来接收前台传进来的参数,而在springmvc中,接收页面提交的数据是通过方法形参来接收的.从客户端请求的key/value数据,经

【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定

众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springmvc中如何接收前台页面的参数,即springmvc中的参数绑定问题. 本篇建议不敲代码 只是看看 因为无法很好衔接 上一篇: 1. 参数绑定的过程 我们可以回忆一下,在struts2中,是通过在Action中定义一个成员变量来接收前台传进来的参数,而在springmvc中,接收页面提交的数据是通过方