• 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":"王五"
    	}
    	
    }
    
  • 相关阅读:
    浅谈缓存管理
    [Architecture Pattern] Database Migration (上)
    knockout.js的学习笔记4
    cenOS5.5安装oracle10g(傻瓜篇)
    SportsStore:管理 — 精通ASP.NET MVC 3
    ASP.NET MVC下的异步Action的定义和执行原理
    基于EF 4.3.1 Code First的领域驱动设计实践案例
    asp.net缓存
    《Pro ASP.NET MVC 3 Framework》部署
    Asp.Net MVC 3.0【Hello World!】
  • 原文地址:https://www.cnblogs.com/supiaopiao/p/8534317.html
Copyright © 2020-2023  润新知