Spring MVC(九)--控制器接受对象列表参数
前一篇文章介绍是传递一个参数列表,列表中的元素为基本类型,其实有时候需要传递多个同一类型的对象,测试也可以使用列表,只是列表中的元素为对象类型。
我模拟的场景是:通过页面按钮触发传递参数的请求,为了简单起见将需要传递的对象列表写死,然后渲染到JSON视图中,在前端查看获取到的参数是不是传过去的值。
1、创建触发请求页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%
String root = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ root + "/";
%>
<script type="text/javascript"
src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script>
<script type="text/javascript" src="<%=basePath%>js/param.js"></script>
<link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet">
<title>Insert title here</title>
</head>
<body>
<div class="param">
<!--使用列表传递参数:列表元素为对象类型 -->
<div class="public objList">
<p style="text-align: center;">列表方式传递参数(对象类型)</p>
<div id="objListForm">
<input type="button" value="测试" id="setObjListParam">
</div>
</div>
</body>
</html>
页面效果如下:

只要点击测试按钮,就可以触发请求,所以接下来就是给按钮绑定一个请求事件。
2、绑定请求
$(function() {
/* 列表方式传递数据:列表元素为对象类型 */
var paramList = [ {
paramId : 1,
paramName : "testname",
paramDesc : "testdesc",
pramTime : "20181003"
}, {
paramId : 2,
paramName : "testname",
paramDesc : "testdesc",
pramTime : "20181003"
}, {
paramId : 3,
paramName : "testname",
paramDesc : "testdesc",
pramTime : "20181003"
} ];
$("#setObjListParam").click(function() {
$.ajax({
url : "./objListParam",
type : "POST",
/* 此处需要定义传递参数的类型为json */
contentType : "application/json",
/* 将json转化为字符串 */
data : JSON.stringify(paramList),
success : function(data) {
console.info(data.paramList);
}
});
});
});
其中列表中对象对应的pojo如下:
public class Param {
private Integer paramId;
private String paramName;
private String paramDesc;
private String pramTime;
public Integer getParamId() {
return paramId;
}
public void setParamId(Integer paramId) {
this.paramId = paramId;
}
public String getParamName() {
return paramName;
}
public void setParamName(String paramName) {
this.paramName = paramName == null ? null : paramName.trim();
}
public String getParamDesc() {
return paramDesc;
}
public void setParamDesc(String paramDesc) {
this.paramDesc = paramDesc == null ? null : paramDesc.trim();
}
public String getPramTime() {
return pramTime;
}
public void setPramTime(String pramTime) {
this.pramTime = pramTime == null ? null : pramTime.trim();
}
}
注意⚠️:对象列表中对象的各属性名必须和对应的pojo中的属性名保持一致,这才是关键。
3、创建控制器
@Controller
@RequestMapping("/param")
public class ParamController { /**
* 获取列表数据:列表元素为对象类型
*
* @param idList
* @return
*/
@RequestMapping(value = "objListParam")
public ModelAndView getParamByObjList(@RequestBody List<Param> paramList) {
ModelAndView mv = new ModelAndView();
mv.addObject(paramList);
mv.setView(new MappingJackson2JsonView());
return mv;
} }
上面代码中红色加粗的部分,就是接受对象列表的方式,还是使用注解@RequestBody,并且参数类型是一个对象列表,参数名就是前端定义的参数名。这个控制器中我直接获取的参数渲染到JSON视图中。至此代码全部完成,下面进行测试。
4、测试
因为控制器中直接将获取到的参数渲染到JSON视图中了,所以测试只要点击页面按钮查看响应结果即可。
Spring MVC(九)--控制器接受对象列表参数的更多相关文章
- Spring MVC(八)--控制器接受简单列表参数
有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- Spring MVC(四)--控制器接受pojo参数
以pojo的方式传递参数适用于参数较多的情况,或者是传递对象的这种情况,比如要创建一个用户,用户有十多个属性,此时就可以通过用户的pojo对象来传参数,需要注意的是前端各字段的名称和pojo对应的属性 ...
- spring cloud关于feign client的调用对象列表参数、设置header参数、多环境动态参数试配
spring cloud关于feign client的调用 1.有些场景接口参数需要传对象列表参数 2.有些场景接口设置设置权限等约定header参数 3.有些场景虽然用的是feign调用,但并不会走 ...
- Spring MVC如何获取请求中的参数
目录 一.获取URL中路径参数 1.1 @PathVariable 注解 1.2 @PathParam 注解 二.获取请求参数: 2.1 GET请求 2.1.1 获取请求中的单个参数:@Request ...
- spring MVC之构造ModelAndView对象
spring MVC之构造ModelAndView对象 ---------- 构造ModelAndView对象 当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndV ...
- 使用Spring mvc接收整个url地址及参数时注意事项
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
- Spring MVC(五)--控制器通过注解@RequestParam接受参数
上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上.下面通过实例说明,场景如下: 在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲 ...
- Spring MVC中如何传递对象参数
springController: @Controller @RequestMapping("/user") public UserController extends BaseC ...
随机推荐
- POJ 1946 Cow Cycling
Cow Cycling Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 2516 Accepted: 1396 Descr ...
- Maven + Springboot + redis 配置
前言 刚进入到Java 开发的世界,对于小白Java的我来说,使用Maven + SpringBoot 的项目下启动redis: 第一步 本地安装Redis 服务 关于redis的教程链接 点击这里: ...
- 2019-8-31-dotnet-数组自动转基类数组提示-Co-variant-array-conversion-是什么问题
title author date CreateTime categories dotnet 数组自动转基类数组提示 Co-variant array conversion 是什么问题 lindexi ...
- 为什么学习JavaScript
为什么学习JavaScript 一.你知道,为什么JavaScript非常值得我们学习吗? 1. 所有主流浏览器都支持JavaScript. 2. 目前,全世界大部分网页都使用JavaScript. ...
- 百度开平台BAE搭建网站
百度开平台BAE搭建网站 一.注册:在百度云注册账号,并且登陆 然后实名验证 二.开始搭建 三.部署项目:我们来把我们的项目提交上去 填写百度云的账号密码 四.删除:删除部署项目 以上就是百度开平台B ...
- asprise-ocr-api-sample 高价收破解版64 32位
asprise-ocr-api-sample验证码 高价收破解版64 32位 Reflector 8.5 打开自己的C#代码 完全100%的反编译了
- element-ui 框架中使用 NavMenu 导航菜单组件时,点击一个子菜单会出现多个子菜单同时展开或折叠?
我在使用 elment-ui 框架的导航组件时,直接粘贴复制了官网上 (http://element-ui.cn/#/zh-CN/component/menu)的例子不会出错,但是当我将他们转化为动态 ...
- JAVA数据结构之哈希表
Hash表简介: Hash表是基于数组的,优点是提供快速的插入和查找的操作,编程实现相对容易,缺点是一旦创建就不好扩展,当hash表被基本填满的时候,性能下降非常严重(发生聚集引起的性能的下降),而且 ...
- java哈希表(线性探测哈希表。链式哈希表)
哈希表(散列表) 通过哈希函数使元素的存储位置与它 的关键码之间能够建立一一映射的关系,在查找时可以很快找到该元素. 哈希表hash table(key,value) 的做法其实很简单,就是把Key通 ...
- [JZOJ3303] 【集训队互测2013】城市规划
题目 题目大意 求\(N\)个点的简单无向图的方案数(有编号). 结果对\(1004535809\)取模. 思考历程 感觉这个问题非常经典. 当时想到了一堆式子,但都觉得可能会有重和漏,于是弃掉了-- ...