使用postman传递list集合后台springmvc接收

目录
  • postman传递list集合后台springmvc接收
    • postman 设置
    • springmvc配置
      • 错误写法1
      • 错误写法2
      • 正确写法1
      • 正确写法2
      • 错误写法1解析 :
      • 正确写法1解析 :
      • 错误写法2解析 :
      • 正确写法2解析 :
    • 为什么需要这么定义接受参数呢

postman传递list集合后台springmvc接收

在做项目的时候我们可能会遇见一些场景需要前端给后端传递某个实体类的集合,这个时候后端的接口写完了,需要进行接口的测试,这里我使用的是postman进行接口测试,下面写下在用postman进行接口测试传递list集合的经验。欢迎指正

postman 设置

postman的安装过程这里就不介绍了,直奔主题吧

首先确定你的请求方式是什么,填写你的url路径

当你的url和请求设定好之后,就需要我们去填写list集合的内容了,整体是json串格式的,注意选择body中的raw, 后面选择JSON(application/json),当这些内容都选择好之后,确定一下Headers中是否已经配置好Cookie,如果上面准备就绪那么你postman这块的配置就已经设置好了

springmvc配置

错误写法1

@PostMapping("saveActRuleBatch")
    public ResultMsg saveActRuleBatch(List<ActRule> actRule) {
        LOGGER.info("============add.activity.rule.batch param:{}===========", actRule);
        return service.saveActRuleBatch(actRule);
    }

错误写法2

@PostMapping("saveActRuleBatch")
    public ResultMsg saveActRuleBatch(@RequestBody List<ActRule> actRule) {
        LOGGER.info("============add.activity.rule.batch param:{}===========", actRule);
        return service.saveActRuleBatch(actRule);
    }

正确写法1

@PostMapping("getList")
    public ResultMsg getList(@RequestBody List<String> names) {
        System.out.println(names);
        return null;
    }

正确写法2

@PostMapping("saveActRuleBatch")
    public ResultMsg saveActRuleBatch(@RequestBody  ActivityModel model) {
        LOGGER.info("============add.activity.rule.batch param:{}===========", model.getActRule());
        return service.saveActRuleBatch(model.getActRule());
    }

ActivityModel实体

/**
 * @author : lqf
 * @Description :
 * @date : Create in 10:10 2018/11/15
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ActivityModel {
    private List<ActRule> actRule;
    private List<ActRewardRule> actRewardRules;
}

ActRule实体

package com.fy.crm.server.bean.entity.newActivity;
public class ActRule {
    private Integer id;
    .........................
    正常的实体类就不写了
}

错误写法1解析 :

首先Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合,所以在接受集合信息时需要通过注解@RequestBody进行解析

正确写法1解析 :

正确写法1我们这里要注意一下,我们通过 @RequestBody进行了json解析也能正常使用,但是这里有个限制是集合的泛型必须是基本数据类型

错误写法2解析 :

这里我们可能会发现我们的错误写法2和正确写法1没有什么区别吧,这里最主要的区别就是他们的泛型一个是基本数据类型,一个是封装好的实体类。对于这种泛型是封装好的实体对象来说正确写法1是不适用的。

正确写法2解析 :

这里首先我们需要封装一个list集合实体类提供set,get方法,在controller接受参数的时候我们要通过@RequestBody和封装好的实体类来进行接受list<实体泛型> 集合

为什么需要这么定义接受参数呢

首先我们想一下springmvc在接受参数的时候我们经常是写一个接受参数对应的实体对象,我们直接在方法中直接接受实体对象就能获取对象中的所有属性了,这是因为这个实体对象中提供了setter,getter方法。

那么问题来了,我们现在传递的list实体类型的setter,getter方法在哪里定义了?那么既然没有定义我们怎么能找到这个list下面对应的实体的getter和setter呢。

所以我们在使用springmvc接受list集合实体泛型的时候需要定义一个实体类,实体类中提供这个集合的setter和getter方法。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 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, async

  • springmvc前台向后台传值几种方式总结(从简单到复杂)

    1. 基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post"> <input name="count" value="10" type="text"

  • springMVC前台传数组类型,后台用list类型接收实例代码

    springMVC后台处理数组对象. list类型的参数,接收前台的数组值,实验了一下,结果还真可以. 不用绑定到对象里面. 当然我这个是前台传递了个包含的是string的数组到后台,然后,后台用list来接收. 具体如下: 前台代码: //发送请求到后台,带数组形式的数据. function testList() { var data = getTreeViewCheckedData(); $.ajax({ url: APP_NAME + "xxxx/testList", data:

  • springmvc接收json串,转换为实体类List方法

    开始我用List<泛型>接受json串,如下,结果list内并非泛型对象,而是JSONObject对象.这样在遍历的时候就报了转化异常的错误.我不知道为什么springmvc在处理这个的时候并没有将json对象转化为泛型对象(我认为应该能获取到,可能是配置问题或者使用不当导致的),这个错误用实际证明了java是假泛型. 如何解决呢,暂时有两种方案,第一种是使用json工具类转化json对象为泛型对象,第二种使用数组接受,然后将数组转化为list对象.代码如下下.如果哪天找到了更好的解决方案,或

  • 使用postman传递list集合后台springmvc接收

    目录 postman传递list集合后台springmvc接收 postman 设置 springmvc配置 错误写法1 错误写法2 正确写法1 正确写法2 错误写法1解析 : 正确写法1解析 : 错误写法2解析 : 正确写法2解析 : 为什么需要这么定义接受参数呢 postman传递list集合后台springmvc接收 在做项目的时候我们可能会遇见一些场景需要前端给后端传递某个实体类的集合,这个时候后端的接口写完了,需要进行接口的测试,这里我使用的是postman进行接口测试,下面写下在用p

  • postman 如何实现传递 ArrayList 给后台

    目录 postman 传递 ArrayList 给后台 后台接受参数如下 Postman中参数格式如下图所示 Postman传递的参数是List类型 实体类中引用了一个List 参数是List集合时 postman 传递 ArrayList 给后台 后台接受参数如下 package com.gpdi.lxq.eladmin.entity.page; import java.util.ArrayList; import java.util.List; import java.util.Map; /

  • SpringMVC 接收前端传递的参数四种方式小结

    目录 SpringMVC 接收前端传递的参数四种方式 @RequestParam 获取注解 @PathVariable获取注解 SpringMVC,可以不设置任何注解即可接收参数 SpringMVC,也可以自动包装成对象 @RequestBody 用来接收数组或者复杂对象 SpringMVC的自动封装(不传参也能进入) SpringMVC接收不到前端传递的参数原因 代码清单 SpringMVC 接收前端传递的参数四种方式 @RequestParam注解 @PathVariable注解 Sprin

  • SpringMVC接收复杂集合对象(参数)代码示例

    SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合.以下列举接收List<String>.List<User>.List<Map<String,Object>>.

  • SpringMVC接收前台传递过来的值的实例

    之前控制器方法获得前台传来的值有三种方式: 1.通过HttpServletRequest: @RequestMapping(value="/index1") public String helloaction1(HttpServletRequest request){ System.out.println(request.getParameter("nnn")); //获得前台name为nnn的元素的值 return "index"; } 2.通

  • Postman传递对象参数(包含有集合对象)

    目录 项目场景: 解决方案: 补充:Postman测试接口传递对象参数 项目场景: postman通常需要传递各式各样的参数,这样的话,进行写参数比较头疼,不知怎么进行传参. 解决方案: 可以考虑将参数对象写成json字符串的样式,然后将将字符串转换成json对象 实体类: import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.ibatis.

  • 使用Postman传递arraylist数据给springboot方式

    目录 使用Postman传递arraylist数据给springboot 首先确定你的请求方式是什么 后端接收的方法 Postman传递ArrayList参数给Springboot的controller 使用Postman传递arraylist数据给springboot 起因:需要做一个批量删除的功能,后台接收一个ArrayList ids . 但是菜鸡小王不晓得postman 怎么传递集合数据给后端进行测试. 这个时候就只好发灰出csdn和百度的强大之处. 首先确定你的请求方式是什么 填写你的

  • 详解springmvc 接收json对象的两种方式

    最近学习了springmvc 接收json对象的两种方式,现在整理出来,具体如下: 1.以实体类方式接收 前端 ajax 提交数据: function fAddObj() { var obj = {}; obj['objname'] = "obj"; obj['pid'] = 1 ; $.ajax({ url: 'admin/Obj/addObj.do', method: 'post', contentType: 'application/json', // 这句不加出现415错误:U

  • SpringMvc接收参数方法总结(必看篇)

    接收参数的方式: 1.HttpServletRequest方式接收 public ModelAndView test1(HttpServletRequest req){ String userName = req.getParameter("userName"); String password = req.getParameter("password"); System.out.println(userName); System.out.println(passw

  • axios发送post请求springMVC接收不到参数的解决方法

    axios发送post请求时,出现了参数后台接收不到的情况,分析了下请求,发现是请求头content-type不对,是application/json,正常应该是application/x-www-form-urlencoded. 解决方法有以下三种: 1.设置axios的默认请求头 //设置全局的 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; var instance = a

随机推荐