SpringMVC接收多参数的处理方法

  • 问题:依赖SpringMVC自带的机制解析多对象参数往往出现解析不了的问题,使用较为复杂。
  • 解决思路:前端 JS 先把传递到后台的对象转换为 JSON 字符串,后台直接使用字符串类型接收,再使用 stringify 方法将 JSON 字符串解析成对应的Java对象。
  • 具体步骤
    1. 前端定义一个空对象

      var obj = new Object();
    2. 将需要传递的参数存入定义的空对象中,传递的参数分为以下几种情况
      1. 前端有多个简单同类型的参数:将这些参数整合到 Array 中,通过 JSON.stringify 方法转换成 JSON 字符串,存入到上面定义的空对象中。

        //三个参数同属String类型
        var d1 = 'a';
        var d2 = 'b';
        var d3 = 'c';
        var simple_data = new Array();
        simple_data.push(d1);
        simple_data.push(d2);
        simple_data.push(d3);
        obj['simple_data'] = JSON.stringify(simple_data);
      2. 前端如果是多个简单但不同类型的参数:将这些参数设置到上面定义的空对象的属性中即可。
        //参数中既有String类型,又有Int类型
        var d1 = 'a';
        var d2 = 1;
        obj['d1'] = d1;
        obj['d2'] = d2;
      3. 前端如果是多个同类型的对象参数:先将这些对象添加到 Array 中,再通过 JSON.stringify 方法转换成 JSON 字符串,存入到上面定义的空对象中。
        //参数中的两个对象是同一类型的对象,具有相同的属性
        var obj1 = new Object();
        obj1['id'] = 1;
        obj1['code'] = '233';
        
        var obj2 = new Object();
        obj2['id'] = 2;
        obj2['code'] = '332';
        
        var same_complex_data = new Array();
        same_complex_data.push(obj1);
        same_complex_data.push(obj2);
        obj['same_complex_data'] = JSON.stringify(same_complex_data);
      4. 前端如果是多个不同类型的对象参数:先将这些对象分别使用 JSON.stringify 方法转换成 JSON 字符串,然后分别设置到上面定义的空对象的属性中。
        //参数中的两个对象是不同类型的对象,具有不同的属性
        var obj1 = new Object();
        obj1['id'] = 1;
        obj1['name'] = 'zhangsan';
        
        var obj2 = new Object();
        obj2['phone'] = '15666666666';
        obj2['email'] = '[email protected]';
        
        obj['obj1'] = JSON.stringify(obj1);
        obj['obj2'] = JSON.stringify(obj2);
    3. 使用ajax上传定义的obj对象。
    4. 后台接收:controller方法直接使用 String 类型参数接收即可。
    5. 字符串处理
      1. 如果传递的是一个对象,使用 JSON.parseObject(json_str, *.class) 将 JSON 字符串解析为Java对象。
      2. 传递的如果是一个数组,使用 JSONArray.parseArray(json_str, *.class) 将 JSON 字符串解析为包含 Java 对象的 List 集合。
  • 可能出现的问题:JSON字符串解析成Java对象的时候,注意 JSON 字符串中的属性应该与Java对象中的属性一一对应,否则会出现解析异常的问题。

原文地址:https://www.cnblogs.com/soundofcolors/p/11086961.html

时间: 2024-11-12 16:52:35

SpringMVC接收多参数的处理方法的相关文章

SpringMVC——接收请求参数和页面传参

转自:http://blog.csdn.net/z69183787/article/details/41653875 1.接收请求请求 (1)使用HttpServletRequest获取,如request.getParameter("name") (2)@RequestParam("pass")String password,或@Param("pass")String password.表单参数也可以用这种方式获取,Spring会自动将表单参数注

ajax传数组到后台,后台springmvc接收数组参数

var   ids= new Array();  $("input[class='detailCheck']:checked").each(function(i,k){   var itemId=$(this).attr("itemId");   ids[i]=itemId;  });    $.ajax({   url : ctx + "/test/setNoProcess.do",   type : "get",   da

Spring-MVC接收request参数和向页面传值总结

接收请求参数值,三种方式: 1使用HttpServletRequest获取 2使用@RequestParam注解 3使用自动封装机制封装成bean对象 向页面传值 1直接使用HttpServletRequest和Session 2使用ModeAndView对象 3使用ModelMap参数对象 4使用@ModelAttribute注解

【踩坑】springMVC 接收String参数没有判断为空

今天在调试iReview项目的接口时,发现新增词条和新增库的时候,某些字段即使留空POST到后台时也能当做不为空. 经过排查,发现后台是使用 String 变量名 == null 这样的语句去判断变量是否为空,这样就产生了bug,因为即使接收到不带值的空字段, spring也会生成String对象,这样以上语句就会过了. 解决办法是,在判断语句里面加上 变量名.equals(""),这样就保证可以拦截到空字段了. 原文地址:https://www.cnblogs.com/lipohon

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 传递和接收数组参数

java url中如何传递数组,springMVC框架controller类如何接收数组参数? 下面介绍一下URL中传递数组参数方法: dd.do?titles[]=col1&titles[]=col2&titles[]=col3 或者使用ajax方式传递: var param = {titles:['col1','col2','col3']};  $.ajax({url:"dd.php", type:"post", data:param, asyn

springmvc接收参数

搭建ssm框架:http://www.cnblogs.com/liyafei/p/7955413.html 1:从表单中接收 普通请求参数 结构目录 role.html 1.1  role.html表单 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <bod

springmvc中的参数接收

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation

让SpringMVC接收多个对象 4种方法

问题背景: 我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该如何处理? 第1种方法:表单提交,以字段数组接收: 第2种方法:表单提交,以BeanListModel接收: 第3种方法:将Json对象序列化成Json字符串提交,以List接收: 第4种方法:将表单对象序列化成Json字符串提交,以List接收: 第4种方法其实是第3种方法的升级,就是将表单转成Json对象,再转成Json字符串提交: 然而,第4种方法还不