springMVC绑定json参数之一
一、SpringMVC @RequestBody接收Json对象字符串
以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用
JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
下面一个例子需要大家注意:
JavaScript 代码:
<script type="text/javascript">
$(document).ready(function(){
test = function () {
var test = [{"userName":"test","address":"gz"},
{"userName":"ququ","address":"gr"}
]; jQuery.ajax({
url : cur_url+"/weekly/test",
type : 'post',
data : JSON.stringify(test),
dataType : 'json',
contentType:'application/json;charset=utf-8',
success : function (data, textStatus) {
console.info(data);
alert("test success!");
},
error:function(){
alert("test error!");
}
});
};
});
</script>
Java代码
@RequestMapping("/test")
@ResponseBody
public List<User> test(@RequestBody List<User> t) {
return t;
}
这样是不可以的。因为spring MVC不会自动转换为List<User>对象。传到后台后,List中是LinkedHashMap类型。
这时需要使用数组接受,如下:
@RequestMapping("/test")
@ResponseBody
public List<User> test(@RequestBody User[] t) {
for (User user : t) {
System.out.println("user:" + user);
System.out.println("userName:" + user.getUserName());
System.out.println("address:" + user.getAddress()); }
List<User> tt = Arrays.asList(t);
for (int i = 0; i < tt.size(); i++) {
User u = tt.get(i);
System.out.println(i + "tt:" + u);
}
return tt; }
这样就可以正常接收ajax发送的json数组字符串,上面也演示了该数组可以转为list。这里数组名称t不用和前台test对应,只要前台传过来的数组中对象可以对应user对象就行。
这里返回的list<User>转为的json字符串,前台接收如下:
success : function (data, textStatus) {
console.info(data);
console.info(data.length);
for ( var i = 0; i < data.length; i++) {
console.info(i + ":" + data[i].address);
console.info(i + ":" + data[i].userName);
}
alert("test success!");
},
springMVC绑定json参数之一的更多相关文章
- springMVC绑定json参数之二(2.1)
二.springmvc 接收不同格式的json字符串 1.首先扫盲几个知识点: 这个绑定json参数讲的都是用@RequestBody标签,所以前台必须传json字符串,不能是json对象,但是如果不 ...
- springMVC绑定json参数之二(2.2.4)
二.springmvc 接收不同格式的json字符串 4).格式四:json传递复杂对象(对象中有属性,还有List,这里验证数组接收,不用List,其他的和上一节不变) 测试一: Test对象属性如 ...
- springMVC绑定json参数之二(2.1.1)
二.springmvc 接收不同格式的json字符串 1.首先扫盲几个知识点: 例子如下: 前台传递json对象(这里uu[0]的名字uu要和Test对象中的属性List<User>名称对 ...
- springMVC绑定json参数之二(2.2.3)
二.springmvc 接收不同格式的json字符串 4).格式四:json传递复杂对象(对象中有属性,还有List) 复杂对象: package testVO; import java.util.L ...
- springMVC绑定json参数之二(2.2.2)
二.springmvc 接收不同格式的json字符串 2).格式二:json字符串数组 前台: test = function () { var test = ["123",&qu ...
- springMVC绑定json参数之二(2.2.1)
二.springmvc 接收不同格式的json字符串 2.扫盲完了继续测试springmvc 接收不同格式的json字符串 1).格式一:json简单数组对象 前台两种传递方式: 方式一(需要拼接js ...
- SpringMVC接受JSON参数详解及常见错误总结我改
SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...
- SpringMVC接受JSON参数详解及常见错误总结
SpringMVC接受JSON参数详解及常见错误总结 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一 ...
- SpringMVC接受JSON参数详解
转:https://blog.csdn.net/LostSh/article/details/68923874 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session ...
随机推荐
- 了解CentOS服务器的基本信息
简单描述了如何从CPU.内存.硬盘性能.负载方面去了解自己工作的服务器性能.这个很重要,必须了解机器的方方面面才能提高在自己运维工作效率. 一.查看linux服务器cpu详情 查看物理cpu个数: [ ...
- android ui篇 自己写界面
对于一些较为简单的界面则自己进行写. 在这里就需要了解xml文件中一些基本的属性以及android手机的知识. 一.目前手机屏幕像素密度基本有5种情况.(以下像素密度简称密度) 密度 ldpi mdp ...
- ABAP动态生成经典应用之Dynamic SQL Excute 程序
[转自http://blog.csdn.net/mysingle/article/details/678598]开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Ta ...
- python cookbook 数据结构
保留最后n个元素: from collections import deque def search (lines, pattern, history=): previous_lines = dequ ...
- 改进地图的vo类
现在的地图只是各帧特征点的集合.创建地图:局部,全局.局部:只相机位置附近的特征点,用来和当前帧匹配求解相机位置的.全局:不定位,回环检测和地图表达.重点或麻烦:维护局部地图的规模.为了实时,保证地图 ...
- POJ 之 Hardwood Species
Hardwood Species Time Limit:10000MS Memory ...
- Symbol Table(符号表)
一.定义 符号表是一种存储键值对的数据结构并且支持两种操作:将新的键值对插入符号表中(insert):根据给定的键值查找对应的值(search). 二.API 1.无序符号表 几个设计决策: A.泛型 ...
- JAVA- 切换默认的Java
删除自带的java yum remove java java -version发现还有java,因为电脑上安装了多个版本的java,这时我们可以用 yum groupremove java 通过组的这 ...
- JS获取内联样式
JS获取内联样式 //获取内联样式 function getCss(obj,attr){//obj:对象,name:style属性 if(obj.currentStyle) { return obj. ...
- 用 CSS3 创建一个漂亮的多种色彩的菜单
1. [图片] thumb.png 2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" > <hea ...