SpringMVC 之@RequestBody 接收Json数组对象

1.操作流程:
  1. 前台使用ajax技术,传递json字符串到后台;
  2. 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串,并返回新的json字符串到前台;
  3. 前台接受后台传递过来的json数据,并显示。

2.js交互代码

/**
* 点击“保存”事件
*/
$("#save"). on("click", function () {
    var obj = document.getElementsByName("menu");
    var roleMenuList=[];
    for(i in obj) {
        if (obj[i].checked) {
            var objs={};
            objs.menuId = obj[i].value;
            objs.roleId = $('#role-no').val();
            objs.efftflag = "VALID";
            roleMenuList.push(objs);
        }
    }
    $.ajax({
        url: "roleMenu/save",
        method: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(roleMenuList),
        //阻止深度序列化,向后台传送数组
        traditional: true,
        async : false,//这里同步,请按实际需求设置
        //成功
        success: function (msg) {
            if (msg.success) {//成功
                bootbox.alert("保存成功");
                //刷新表格
                refresh();
                //关闭窗口
                win.close();
            } else {
                bootbox.alert(msg.message);//操作失败
            }
        },
        //请求错误
        error: function () {
            bootbox.alert("请求错误");
        }
    })
});

注意:

1.contentType: "application/json; charset=utf-8"中的application/json必不可少,
        后端的Controller层的@requestBody需要这个来确定接收的数据的类型;

 2.JSON.stringify(roleMenuList)不可少,把数据转化成json字符串;



3.SpringMVC后台接收

@reponseBody
@RequestMapping("/save")
    public JSONResult saveRoleMenu(@RequestBody RoleMenu[] roleMenus) {
        for (RoleMenu roleMenu : roleMenus) {
            roleMenu.setEfftflag(Status.VALID);
            boolean result = roleMenuService.addRoleMenu(roleMenu);
            if (!result)
                return JSONResult.error("参数错误");
        }
        return JSONResult.success("success");
    }

注意:

1.用RoleMenu[] roleMenus接收前台传的json对象数组;

2.@RequestBody注解只能用在Controller层;

结果展示:





  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值