SpringMVC对于传入多个对象参数遇到的问题
最近遇到一个问题,一个添加接口,需要添加三个对象,而且这三个对象里面的属性名很多都是一样的。
本来是拿三个对象直接接收值,但是因为很多属性名都一样,所以接收不到值。
百度也有的说把这三个对象的参数重命名然后整成一个对象传过来,但是相对于实体类里相同参数偏多的话,就很麻烦。
最后解决办法如下:
例如:

具体方法如下:
借助fastjson工具类
package com.infohold.city.map.util;
import java.util.Map;
import com.alibaba.fastjson.JSON;
public class JsonXMLUtils {
public static String obj2json(Object obj) throws Exception {
return JSON.toJSONString(obj);
}
public static <T> T json2obj(String jsonStr, Class<T> clazz) throws Exception {
return JSON.parseObject(jsonStr, clazz);
}
public static <T> Map<String, Object> json2map(String jsonStr) throws Exception {
return JSON.parseObject(jsonStr, Map.class);
}
public static <T> T map2obj(Map<?, ?> map, Class<T> clazz) throws Exception {
return JSON.parseObject(JSON.toJSONString(map), clazz);
}
}
接下来controller层传值
/**
*
* 企业自查隐患--添加+修改
*/
@RequestMapping(value = "insertcompanycheckhidden", method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public RestResponse<Object> insertCompanyCheckHidden(@RequestBody Map<String, Object> models){
return wrap(companyCheckHiddenService.insertCompanyCheckHidden(models));
}
service代码如下
@Override
public Object insertCompanyCheckHidden(Map<String, Object> models) {
CompanyCheckHidden companyCheckhidden = null;
HiddenCheckCompanyItem hiddenCheckCompanyitem = null;
CompanyCheckHiddenScale companyCheckHiddenscale = null;
try {
companyCheckhidden = JsonXMLUtils.map2obj((Map<String, Object>)models.get("companyCheckhidden"),CompanyCheckHidden.class);
hiddenCheckCompanyitem=JsonXMLUtils.map2obj((Map<String, Object>)models.get("hiddenCheckCompanyitem"),HiddenCheckCompanyItem.class);
companyCheckHiddenscale=JsonXMLUtils.map2obj((Map<String, Object>)models.get("companyCheckHiddenscale"),CompanyCheckHiddenScale.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//其他逻辑。。。。。。。。。
return xxx;
}
postman测试该添加接口:
{
"companyCheckhidden": {
"id": "1",
"name": "张三"
},
"hiddenCheckCompanyitem": {
"id": "2",
"name":"李四"
},
"companyCheckHiddenscale": {
"id": "3",
"name":"王五"
}
}
SpringMVC对于传入多个对象参数遇到的问题的更多相关文章
- SpringBoot 传入JSON对象参数
1.请求参数格式必须是正确的JSON. 2.在入参中使用注解@RequestBody,用于接收JSON参数,使其自动转对象 3.关于lombok在此产生的一点小坑,@Builder对@RequestB ...
- JS中用apply、bind实现为函数或者类传入动态个数的参数
为纪念10年没写blog,第一篇博文就以这样一个有趣的窍门开始吧 -___- 在ES5中,当我们调用一个函数时,如果要传入的参数是根据其他函数或条件判断生成的,也就是说不确定会传入多少个参数时,在不改 ...
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...
- JAVA之等号、传类对象参数与c++的区别
在JAVA中用等号对类对象进行赋值,实际上操作的是对象的地址. eg: package MyText; class ClassA { int value; public void seta(int v ...
- SpringMVC第三篇【收集参数、字符串转日期、结果重定向、返回JSON】
业务方法收集参数 我们在Struts2中收集web端带过来的参数是在控制器中定义成员变量,该成员变量的名字与web端带过来的名称是要一致的-并且,给出该成员变量的set方法,那么Struts2的拦截器 ...
- PHP之回调函数传参(解决eval函数拼接对象参数的问题)
在使用Smarty时,定义了一个统一调用控制器的函数,如下: function C($name, $method){//控制器的名称和其中方法的名称 require_once "contro ...
- 《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)
上一篇我们学习了简单的参数接收方式,以及对编码的统一处理.今天我们来接收对象参数. 一.接收对象参数 jsp页面: <%@ page language="java" impo ...
- jQuery 传递对象参数到Spring Controller
当jQuery 发送ajax请求需要传递多个参数时,如果参数过多,Controller接收参数时就需要定义多个参数,这样接口方法会比较长,也不方便.Spring可以传递对象参数,将你需要的所有查询条件 ...
- spring MVC 如何接收前台传入的JSON对象数组并处理
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
随机推荐
- 160412、DWR使用笔记
DWR是一个框架,简单的说就是能够在javascript直接调用java方法,而不必去写一大堆的javascript代码.它的实现是基于ajax的,可以实现无刷新效果. 网上有不少DWR的例子,但大都 ...
- HQL的第一个程序
使用HQL查询数据库: 分为以下几个步骤 1获取query对象 //1获取query对象 String hql="FROM Employee e where e.salary>?&qu ...
- swift tableViewController
tableViewController 控制器 import UIKit class ViewController: UITableViewController { ...
- 如何做rom,体验做rom过程,附图文教程,感谢各位romer
http://bbs.gfan.com/android-5408130-1-1.html 有人问我,我简单的写一下,来源XDA,运行环境ubuntu 10.4. ubuntu安装很简单,在window ...
- shell awk实战
一.文本处理 1.按行提取关键字频次(如取第5列) awk 'BEGIN{FS="|"} {a[$5]+=1;} END {for(i in a) print i ":& ...
- SIP中的 session, dialog 及 transaction 的解释
http://stackoverflow.com/questions/35133331/difference-between-session-dialog-and-transaction-in-sip ...
- SHELL脚本自动备份数据库
#!/bin/bash db_user="root" db_passwd="dddddd " db_name="mmmmmm" cd /db ...
- TraClus java版实现
前一阵子我们部门接到了业务那边的一个需求.想通过用户的wifi数据计算出商场内用户最喜爱走的线路.其实说白了就是用户轨迹聚类.根据业务的需求,我们最终采用了traClus聚类算法.tra ...
- Latch free等待事件
Latch free等待事件的三个参数:p1-latch的地址:p2-latch编号:p3-请求次数.从oracle10g起,latchfree不再包含所有的latch等待,有些latch等待可能表现 ...
- mysql 系统变量和session变量
mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...