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 ... 
随机推荐
- 精选15个国外CSS框架
			转自:http://blog.bingo929.com/css-frameworks-15.html 什么是css框架 实际上还是让我们从框架说起吧.框架就是一个你可以用于你的网站项目的基本的概念上的 ... 
- jquery中on绑定click事件在苹果手机中不起作用
			写一个div当做了一个按钮来使用. <div class="button"> <div class="sure"> 确定 </di ... 
- Task ProgressBar模拟现实完成后显示TextBox
			private async void Form1_Load(object sender, EventArgs e) { progressBar1.Maximum = ; progressBar2.Ma ... 
- boost 条件变量
			// boost 条件变量 // 做个简单的笔记 #include <boost/thread/mutex.hpp> #include <boost/thread/condition ... 
- 微信公众号支付出现:“当前页面的URL未注册”
			微信公众号H5调起支付时,点击支付按钮出现“当前页面的URL未注册”的提示.解决办法:由于2017年8月1日微信官方把关于支付的信息转移到了商户平台:公众平台微信支付公众号支付授权目录.扫码支付回调U ... 
- 弹性网卡支持私网多IP
			摘要: 弹性网卡支持多IP功能可以最多在一块弹性网卡配置20个私网IP地址,特别适用于于以下场景. 1.单个服务器上托管多个应用,提升实例利用率,每个应用对外暴露一个独立的服务IP地址. 2.当实例发 ... 
- Java笔记 - GUI编程
			一.图形界面开发 1.AWT开发 AWT(Abstract Window Toolkit)在Windows.Linux提供的图形窗口之上,再次进行了抽象,为不同语言开发的程序提供统一定义的图形接口,可 ... 
- 获取一个数组(vector)与查找值(value)的差最小绝对值的成员索引的算法
			代码如下: 函数作用:传递进来一个数组(vector),和一个需要查找的值(value),返回与value的差值绝对值最小的vector成员索引,若value不在vector范围中,则返回-1: in ... 
- iframe 的那些事儿
			项目中有不少地方用到iframe,今儿把使用iframe遇到的一些问题一块儿总结一下. 1.javascript监听iframe加载完成事件 iframe加载过程需要一定时间,这个加载过程常常出现白屏 ... 
- 04.基本数据类型(list,tuple)
			本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range一. 列表1.1 列表的介绍 列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ... 
