前一篇文章介绍是传递一个参数列表,列表中的元素为基本类型,其实有时候需要传递多个同一类型的对象,测试也可以使用列表,只是列表中的元素为对象类型。

我模拟的场景是:通过页面按钮触发传递参数的请求,为了简单起见将需要传递的对象列表写死,然后渲染到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视图中了,所以测试只要点击页面按钮查看响应结果即可。

最新文章

  1. ElasticSearch 5学习(9)——映射和分析(string类型废弃)
  2. LeetCode&mdash;&mdash;Balanced Binary Tree(判断是否平衡二叉树)
  3. [php入门] 4、HTML基础入门一篇概览
  4. 解析window.open链接的参数
  5. RFC3986编码 C 语言实现(支持大部分中文)
  6. view的加载
  7. SAP自定义打印机纸张
  8. java中整数类型(short int long)的存储方式
  9. 如何开启多用户同时远程连接(Windows2008 Windows2012)
  10. 非web项目中使用XDT的实例(续)
  11. ASP连接ACCESS数据库
  12. nodejs+socket.io即时聊天实例
  13. 纯css 构造的tip
  14. 【Android Developers Training】 65. 应用投影和相机视图
  15. 一个很不错的支持Ext JS 4的上传按钮
  16. mysql partition分区
  17. F1赛道 - Bahrain International Circuit | 巴林国际赛道
  18. Flask 中的蓝图(BluePrint)
  19. 2019-03-11-day009-函数定义
  20. 前端开发笔记(4)css基础(下)

热门文章

  1. Neo4j使用简单例子
  2. DLL相关下断点
  3. OpenCV-Python Tutorials目录
  4. 关于VSCode的一些常用插件和一些常用设置
  5. lvs负载均衡连接
  6. 2816: [ZJOI2012]网络
  7. 修改sql server表字段的字符串
  8. transient在java中的作用
  9. HDU-1423-Greatest Common Increasing Subsequence-最长公共上升子序列【模版】
  10. &lt;Django&gt; 第三方扩展