一般web端都是用form标签的形式进行表单提交到后台,后台控制层再用相应的实体对象去接收前端传来的json参数。

但是有时候前端界面很复杂,要传入后端的参数是各种标签里面的value值,这些值又是来自不同实体对象,所以后台接收参数就会变成一个麻烦事。

我现在采取的措施是,后端控制层用一个map参数接分别来自三个不同对象的属性。不过要事先在前端封装好json对象。

(实际场景是微信公账号)

1.前端代码

submitSave:function (){

                    var data = {
"visitorInfo":{},//预约信息
"license":{},//车辆信息
"user":{}//当前登录用户信息 };
data.license.carNo = vm.carNo;
data.visitorInfo.originatorType = vm.userType;
data.visitorInfo.createId = vm.createId;
data.visitorInfo.userId = vm.userId;
data.visitorInfo.receiverId = vm.receiverId;
data.visitorInfo.invitationReason = vm.invitationReason;
data.visitorInfo.ddr = vm.ddr;
data.visitorInfo.invitationTime = vm.invitationTime;
data.visitorInfo.endTime = vm.endTime;
data.user.id = vm.dengluId; // console.log(JSON.stringify(data))
$.ajax({
url: '${ctx}/mobile/submit',
dataType: 'json',
contentType : 'application/json;charset=utf-8',//缺少这个
type: 'post',
data: JSON.stringify(data),//缺少这个
success: function (data) {
console.log(data);
if (data.status == 1) {
setTimeout(function () {
// mui.back();
//跳到首页
window.location.href = '${ctx}/mobile/toIndex';
}, 1000)
}
if(data.status == 0){ }
if(data.msg != ''){
mui.toast(data.msg);
} }
});
},

2.后台代码(中间map用阿里的fastjson解析)

/**
* 提交和修改按钮接口
*/
@ResponseBody
@PostMapping("/submit")public ResponseEntity<Response> submit(@RequestBody Map<String,Object> map,HttpServletRequest request) { Map<String,String> map1 = (Map) map.get("visitorInfo");
Map<String,String> map2 = (Map) map.get("license");
Map<String,String> map3 = (Map) map.get("user"); VisitorInfo visitorInfo = JSON.parseObject(JSON.toJSONString(map1), VisitorInfo.class);
License license = JSON.parseObject(JSON.toJSONString(map2), License.class);
UserInfo user = JSON.parseObject(JSON.toJSONString(map3), UserInfo.class);
}

springboot之json传参(后台控制层如何接收和解析参数)的更多相关文章

  1. SpringBoot 处理 POST Json 传参枚举

    在 Spring 框架中对枚举类型的序列化/反序列化是有限制的. 假设如下面这样在某些情况下就不能正常工作: 123456789 public enum PayChannelEnum implemen ...

  2. json传参应用

    json传参应用 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅 ...

  3. axios post传参后台无法接收问题

    起因是在angular项目中使用axios发送post请求,向后台传参后台一直无法接收,网上查了有说是请求头设置不对,需要把Content-Type:application/x-www-form-ur ...

  4. ASP.NET WebAPI RC 竟然不支持最常用的json传参

    壮士断腕(WCF Web API),为的是 ASP.NET Web API 的横空出世,再加上它的开放(开源),于是对之产生了一点点痴情,并写下了HttpClient + ASP.NET Web AP ...

  5. Jeecms6中后台控制层Action如何将值传入前台视图层模板中的?

    转载:https://blog.csdn.net/wsm201005030226/article/details/44343069     Jeecms后台控制层如何传值到前台freemarker的? ...

  6. HttpClient调用doGet、doPost、JSON传参及获得返回值

    调用 doPost:map传参 Map<String,Object> map = new HashMap<>(); map.put("test"," ...

  7. 页面ajax请求传参及java后端数据接收

    js ajax请求传参及java后端数据接收 Controller: package com.ysl.PassingParameters.controller; import java.util.Li ...

  8. 实现TCP断点上传,后台C#服务实现接收

    实现TCP断点上传,后台C#服务实现接收 终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现, ...

  9. json传参 js前端和java后端 的简单例子

    下面讲解了从前端js对象-->json字符串-->java字符串---->java map的过程 1,初始化js对象 var param = {}; param.krel = kre ...

随机推荐

  1. XSS之Beef的使用

    0x01 Beef简介 BeEF是The Browser Exploitation Framework的缩写.它是一种专注于Web浏览器的渗透测试工具. beef管理.挂钩web浏览器的过程: 生成交 ...

  2. Spring-Security无法正常捕捉到UsernameNotFoundException异常

    前言 在Web应用开发中,安全一直是非常重要的一个方面.在庞大的spring生态圈中,权限校验框架也是非常完善的.其中,spring security是非常好用的.今天记录一下在开发中遇到的一个spr ...

  3. Jenkins 插件安装问题

    插件安装问题 尝试修改更新站点为可用的镜像站点 打开 Jenkins > Manage Jenkins > Manage Plugins > Advanced,将 Update Si ...

  4. 第6章.BitArray类

    参考链接: https://www.cnblogs.com/wang7/archive/2012/04/13/2446353.html https://www.runoob.com/csharp/cs ...

  5. java网页程序采用 spring 防止 csrf 攻击 转

    银行项目开发过程中,基本都会采用 spring 框架,所以完全可以不用自己开发 filter 去拦截 csrf 攻击的请求,而直接采用实现 spring 提供的 HandlerInterceptor ...

  6. NodeJS_0001:关于install的方式

    最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱.其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同 ...

  7. react+dva+antd+umi项目建立操作流程及知识点总结

    0.1 引用 0.1.1 react官网 0.1.2 dva官网 0.1.3 antd-mobile官网 0.1.4 umijs官网 0.1.5 转载文章-umi操作手册 一.what are the ...

  8. 在javascript编程语言中,数据类型boolean的相关知识

    一. 1.字符串类型: 空字符串返回false,非空字符串均返回true; 2.数值类型: 0或NaN返回false,其他数值返回true; 3.布尔类型: false返回false,true返回tr ...

  9. Python学习笔记一:变量、函数

    变量.函数是Python语言的最基本单元,下面是我作为初学者的当前理解,随着学习的深入今后会做刷新. 变量:表示操作对象是谁. 变量的方法:表示能做什么事情. 如何设计变量:先分析需要解决的问题,基于 ...

  10. Deepin Linux 升级wine应用

    前提是升级已经安装的wine应用 参考: 微信升级 mkdir /tmp/wechat cd /tmp/wechat wget https://dldir1.qq.com/weixin/Windows ...