SpringMVC 如何使用集合参数(list,数组)

SpringMVC请求参数的获取与绑定:基本类型、数组类型、List类型、Map类型 当用户在页面触发某种请求时,一般会将一些参数(key/value)带到后台。在SpringMVC中可以通过参数绑定,将客户端请求的key/value数据绑定到Controller处理器方法的形参上。 SpringMVC中有一些默认支持的类型,这些类型可以直接在Controller类的方法中定义,在参数绑定的过程中遇到该种类型就直接进行绑定。其默认支持的类型有以下几种:HttpServletReq... 阅读详情

1.基础类型、赋值的时候不需要特别指名成员变量(String,基础类型的封装类)的引用类型集合参数

基础类型是没有成员变量的

页面如下:

<input type="text" value="" name="titleName" id="add_titleName"/>
<input type="text" value="" name="titleName" id="add_titleName"/>
<input type="text" value="" name="titleName" id="add_titleName"/>

后台接收代码如下:

public void getParmas(List<String> titleName)
//或者使用下边这个方式
public void getParmas(String[] titleName)

 2.引用类型的集合参数(即List<Bean>)

直接在方法上使用List<Bean>报不能实例化错误(Could not instantiate bean class [java.util.List]: Specified class is an interface)!

org.springframework.beans.BeanInstantiationException: 
Could not instantiate bean class [java.util.List]: Specified class is an interface] with root cause

解决方案:构造一个包装类,类属性写着这个list<Bean>

eg:

class UserVO{
   List<User> userList;   
}

 

@RequestMapping("/add")
 public void add(UserVO uservo){
     。。。。
 }

 前台页面:

<input type="text" value="" name="uservo.userList[0].username" id=""/>
<input type="text" value="" name="uservo.userList[0].username" id=""/>
<input type="text" value="" name="uservo.userList[0].username" id=""/>

本人感觉,参数使用list<Bean>,前面加上@RequestBody接受带List对象的对象或者List对象

@PostMapping("/batchSubmit")
public ResultMapper<XingZhengChuFa> batchSubmit(@RequestBody XingZhengChuFa[] chuFas) throws Exception {}    
//或者使用@RequestBody List<XingZhengChuFa> chuFas  不建议使用List
@PostMapping("/batchSubmit")
public ResultMapper<XingZhengChuFa> batchSubmit(@RequestBody  List<XingZhengChuFa> chuFas) throws Exception {}

这是前端给的参数,就应该是json数组。 

===============================================================================================

以下是介绍使用@RequestBody接受带List对象或者对象数组(User[] user)

第一种方式 传递的参数Bean

jsp文件:
$("#saveuddd").click(function(){
                    var saveDataAry=[];
                    var data1={"name":"test","password":"gz"};
                    var data2={"name":"ququ","password":"gr"};
                    saveDataAry.push(data1);
                    saveDataAry.push(data2);
                    $.ajax({
                        type:"POST",
                        url: basePath + "/user/saveUser",
                        dataType:"json",
                        contentType:"application/json", // 指定这个协议很重要
                        data:JSON.stringify(saveDataAry), //只有这一个参数,json格式,后台解析为实体,后台可以直接用
                        success:function(data){
                        }
                    });
                })

 

java文件
 @RequestMapping(value = "saveUser", method = {RequestMethod.POST })
     @ResponseBody
    public void saveu( @RequestBody List<User> users ){ //此时的user是map数据,并没有解析为bean // 不建议使用
         System.out.println(users) ;
    }
使用如下方法,可以使用bean
 @RequestMapping(value = "saveUser", method = {RequestMethod.POST })
     @ResponseBody
    public void saveu( @RequestBody User[] users ){ 
         System.out.println(users.getName()) ; // 此时的user是实体bean
    }

第二种方式 传递的键值对

jsp同上
另外一种:
 @RequestMapping(value = "saveUser", method = {RequestMethod.POST })
 @ResponseBody
 public void saveu( @RequestBody List<Map<String,String>> users ){ 
// spring MVC只能解析外层的json格式,内部的bean转化为Map格式的键值对,需要对map解析
      List<User> userList = new ArrayList<User>();
      for(Map<String,String> map : users){
          User u = new User();
          u.setName(map.get("name"));
          u.setPassword(map.get("password"));
          userList.add(u);
      }
     // 这里就可以使用 userList 了
 }

第三种方式

能够传递多个参数,但是每一个参数都是字符串(bean类型的数据会转化为JSON格式的字符串)

jsp文件
$("#saveuddd").click(function(){
                    var saveDataAry=[];
                    var data1={"name":"test","password":"gz"};
                    var data2={"name":"ququ","password":"gr"};
                    saveDataAry.push(data1);
                    saveDataAry.push(data2);
                    $.ajax({
                        type:"POST",
                        url: basePath + "/user/saveUser",
                        dataType:"json",
                        data:{users:JSON.stringify(saveDataAry),aa:"ddd"},
                          // 可以传递多个参数,但此时的users内容与另外一个参数:aa 的内容一起传递,所以后台解析为字符串
                         // 后台接收的users内容:[{"name":"test","password":"gz"},{"name":"ququ","password":"gr"}]
                         // 后台接收的 aa 内容:"ddd"
                        success:function(data){

                        }
                    });
                })
java文件
@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
     @ResponseBody
    public void saveu( String users , String aa ){
         System.out.println(users) ;
    }

 

 

MyBatis中调用存储过程传入List集合参数的实例详解 项目中调用存储过程中传参-List类型详解 阅读详情

相关推荐

Spring MVC不能直接接收list类型参数的问题

前端使用jquery向后台传递数组类型的参数,Java后台直接通过List类型接收,会发现无法取到参数。

SpringMVC接受List的几种方式

说到SpringMVC接受List参数,可能有人会说这个是个坑!下面我来跟大家说怎么补这个坑。下面我分几种情况来讲: 一、只接收一个List 1、form表单提交 controller代码: @ResponseBody @RequestMapping("test") public void test(@RequestParam(value="list",required = false)...

Carson073的博客 1万+

告别硬件!用Wokwi在线模拟ESP32点灯,5分钟搞定开发环境搭建

本文介绍如何使用Wokwi在线模拟器快速搭建ESP32开发环境,5分钟内完成点灯实验。无需硬件即可体验GPIO控制、PWM调光等核心功能,特别适合物联网开发初学者和快速原型验证。Wokwi的零成本、全功能模拟特性让嵌入式开发变得前所未有的简单高效。

weixin_42567497的博客 495

SpringMVC参数的传递——接收List数组类型的数据

前言 本文主要是记录SpringMVC中当前台传过来数组的时候,如何把前台传过来的数据封装到Controller层方法的形参中。 在了解下面参数如何传递前先记住两个结论: 当Ajax以application/x-www-form-urlencoded编码格式上传数据,必须使用JSON对象传递数据,后台需要使用@RequestParam 或者HttpServletRequest来接收数据 当Aja...

lxcoding 2330

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载。要注意用拥塞控制与流量控制的区别,拥塞控制是一个全局性的过程,涉及到所有的额主机、路由器,以及与降低网 拥塞控制的算法有:慢开始、拥塞避免、快重传、快恢复四种。 慢开始和拥塞避免 发送方维持一个拥塞窗口的状态变量,其大小取决于网络的拥塞程度

兰亭风雨的专栏 1万+

squirrel校园二手交易平台

squirrel校园二手交易平台 (适合寻找SSM项目练手的你。) 项目起源:   期末的课程设计,三人一组,我和两个舍友,一时起兴,决定做一个校园二手交易平台,一开始兴致与激情满满,可是后期时间上的冲突,让我们三个人对于这个项目有点累。   这个项目刚定题两天,BezosLee由于通过了360的网上在线笔试,收到了360公司的免费培训邀请,要去北京的360总部进行培训一周,值得庆...

K.SHI的博客 5万+

springmvc 接受数组,集合(list,set)类型的参数

一:前台直接传递到controller数组。 1. springmvc框架中请求参数会自动绑定到方法的形参中。 但是当我们的形参是一个数组、集合(list, set)时, 参数是不能绑定成功的。 但是可以通过 添加属性@RequestParam(value="参数名[]"),来完成绑定的。 js: $(function(){ $("#btn").click(function(){

zona 4689

MAX96712在车载摄像头系统中的带宽分配与传输能力计算解析

在计算摄像头带宽与传输接口的关系时,需要考虑视频流的像素分辨率、帧率、颜色深度等因素。以 MAX96712 这种 GMSL2 产品为例,它支持每个链路在正向方向以 3Gbps 或 6Gbps 的固定速率工作。

weixin_43199439的博客 3330

springmvc中,在业务控制方法中,收集数组参数,收集List集合包含javabean

收集数组参数 EmpAction.java中 @Controller @RequestMapping(value="/emp") public class EmpAction { @RequestMapping(value="/deleteAll",method=RequestMethod.POST) public String deleteAll(Model model,int[] id

fangmingzhmg的博客 416

背靠背VSC直流母线电压控制与同步发电机并网发散问题:原理、分析与解决方案

背靠背VSC直流母线电压控制与同步发电机并网发散问题分析 摘要: 本文研究了背靠背VSC系统在整流侧由理想三相电源切换为同步发电机时出现的直流母线电压振荡和发散问题。通过理论分析发现,锁相环同步失稳、等效阻抗失配和直流母线电容参数失配是导致系统失稳的关键因素。当整流侧接入同步发电机后,系统形成正反馈振荡回路,同时等效电感增大导致电流环响应速度降低,直流侧电容容量不足无法吸收发电机功率波动。文章提出了从跟网型控制到构网型VSG控制的完整升级方案,包含详细的MATLAB/Simulink建模和控制算法实现,并通

huanghm88的专栏 122

电子科技大学计算机预推免(最终去向)

电子科技大学,预推免报名时必须要有一封本校老师写的推荐信,推荐信基本上就是复试的入场券,所以一定要提前联系老师,拿到推荐信。只要有机会进了面试,我觉得老师对于双非并不歧视,面试的个人表现才是关键性决定因素,技巧性也是很强的,如果有需要帮助的,欢迎私信~~

D1379951481的博客 3368

【springMVC_14_Spring Mvc 参数传递_普通对象&数组&集合List】

后台(@RequestParam注解不可缺少)

edwer93的博客 118

跨应用服务器的自定义 IDoc 传输实战:以 CATSDB 工时为例,打通两套 SAP 系统的数据通道

本文介绍了在企业多SAP系统环境下,使用SAP ALE/IDoc技术实现工时数据跨系统传输的解决方案。文章从技术选型、系统架构到具体配置步骤进行了详细说明,重点阐述了IDoc/ALE在异步传输、全链路追踪和数据重放方面的优势。 文章详细讲解了端到端实施流程,包括Logical System配置、RFC Destination创建、Message Type定义、Segment和Basic Type设计等关键步骤。同时提供了出站封装的ABAP代码示例,强调调用MASTER_IDOC_DISTRIBUTE函数后执

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 173

SpringMVC框架-06:接收参数

第一种: 原生request接收(一般不使用) @RequestMapping("/test1.action") public ModelAndView test1(HttpServletRequest request) { //通过传统的方式接收参数,request.getparameter()来接收参数 String name = request....

303

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

springmvc如何接收json对象的集合?

经常会有需要在controller中接收数组或者一个集合作为参数,批量进行处理,并且在前端或者提供出去的接口支持的是json格式 不能直接定义一个List集合在参数那里接收,需要通过对象中包含list集合的形式 1. 首先controller接收的参数需要使用@requestBody封装,表示转换json为对象 @RequestMapping(value = "/sendMsg") ...

第一行代码 1914

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SpringMVC接收参数

SpringMVC接收参数 1.使用原生request对象接收参数 2.当请求的参数名称和处理器形参名称一致的时候会将请求参数和形式参数进行绑定 3.使用javaBean来接收参数 4.使用数组来接收参数 5.包装类来接收参数 6.List集合来接收参数 代码示例: 前端请求页面: <%@ page contentType="text/html;charset=UT...

weixin_43478300的博客 564

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringMVC学习05】SpringMVC中的参数绑定总结

转载  https://blog.youkuaiyun.com/eson_15/article/details/51718633   众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springmvc中如何接收前台页面的参数,即springmvc中的参数绑定问题。 1....

qq_20610631的博客 162

SSM之springMVC(3/4)

上一节SSM之springMVC(2/4) 目录 包装类型pojo参数绑定 需求 实现方法 页面参数和controller方法形参定义 集合类型绑定 数组绑定 需求 实现 List绑定 需求 实现 Map绑定 服务器校验 数据回显 什么是数据回显 Pojo数据回显方法 包装类型pojo参数绑定 需求 商品查询controller方法中实现商品查询条件传入。...

qq_40802448的博客 559

SpringMVC-请求-Controller集合类型传参

集合类型参数 保存简单类型数据,请求参数名与处理器方法形参名保持一致,且请求参数数量> 1个 @RequestMapping("/requestParam") public String requestParam10(@RequestParam("nick") List<String> nick){ System.out.println(nick); return "page.jsp"; } 注意: SpringMVC默认将List作为对象处理,赋值前先创建对象,然后将nick

听雨少年的博客 621

SpringMVC接收复杂集合参数

[原文地址:](http://jxd-zxf.iteye.com/blog/2072300)Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时

不会写博客 1119

SpringMVC下5中参数类型传递

RequestParam相当于给对应的形参起了一个别名,用来接受url中name对应的值xxxx?name=xx&age=xx或是xxxx?username=xx&age=xx都是一样的效果。

weixin_42196338的博客 185

SpringMvc参数传递

SpringMvc两种映射规则 1.spring mvc 默认参数映射规则:名字一致 自动映射 2.spring mvc自定义映射规则:可以通过注解来实现=> @RequestParam 传递基本数据类型 @RequestParam,POST和GET均支持 注解定义 @Target({ElementType.PARAMETER}) // 只能作用于参数上 @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ..

m0_52012606的博客 2598

SpringMVC的五种请求传参方式

1、传统传参方式   方法参数中使用request,通过request.getParameter("参数名"),再封装到bean中 @RequestMapping("/test01") public ModelAndView test01(HttpServletRequest request){ String username = request.getParam...

weixin_30278311的博客 215
上一篇: Java转化为json所对应的类型格式
下一篇: textarea内容有换行时存入数据库丢失问题
阿波罗AP
博客等级 码龄9年 14粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值