ajax传递参数给springmvc总结[转]
通过ajax传递参数给springmvc,经常会因为 参数类型太复杂,或者根本不知道springmvc都支持哪些类型转换,导致后台接收出现各种问题。如果书写格式没有问题仍然接受参数报错,大部分是因为springmvc默认无法支持该种格式的json转换导致的
现在一句话解决,就是用@RequestBody注解接收
下面看一些传参的例子,基本涵盖了大部分的参数传递类型
案例1:简单数组 idList[]
ajax
$("#test1").on("click",function(){
var idList = new Array();
idList.push("1");
idList.push("2");
idList.push("3");
$.post("/mvc/client1/test1",{idList:idList})
});
java
/**
* 简单类型list
* explain:包含string int date 等属性
*/
@RequestMapping("/test1")
@ResponseBody
public void test1(@RequestParam("idList[]") List<Integer> idList){
for(Integer i: idList){
System.out.println(i);
}
}
案例1中要注意,当你ajax传递一个很简单的数组,本以为后台能够接受到,却总是报错,很可能的原因是:http请求传递数组的时候,为了区别是一个数组,会在数组名称后面加上中括号“[]”,所以后台接受的时候用@RequestParam告诉方法,你要的idList实际上是idList[]就可以了
案例:2:简单对象User (包含id,username)
ajax
$("#test2").on("click",function(){
var id =1;
var username ="fangxin";
$.post("/mvc/client1/test2",{id:id,username:username,birthday:new Date()})
});
java
@RequestMapping("/test2")
@ResponseBody
public void test2(User user){
System.out.println(user.getId());
System.out.println(user.getUsername());
System.out.println(user.getBirthday());
}
这就是最常见的传递参数,如果一个对象的属性都是简单类型,那基本没什么问题
案例3:复杂对象User (包含id,username,String[],List<Person>)
ajax
$("#test3").on("click",function(){
var user = {
id:1,
username:"fangxin",
birthday:new Date(),
luckyNums:[1,2,3],
friends:[
{name:"zhangsan"},
{name:"lisi"}
]
};
$.ajax({
type: "POST",
url:"/mvc/client1/test3",
data: JSON.stringify(user),
contentType:"application/json"
})
});
java
/**
* 复杂对象
* explain:包含简单list属性、对象list属性
*/
@RequestMapping("/test3")
@ResponseBody
public void test3(@RequestBody User user){
System.out.println(user.getId());
System.out.println(user.getUsername());
System.out.println(user.getBirthday());
for(Integer i:user.getLuckyNums()){
System.out.println(i);
}
for(Person p:user.getFriends()){
System.out.println(p.getName());
}
}
案例3中的User的属性相当复杂,有简单数组,还有包含对象的复杂List,这样的user如果用案例2的方式接受,肯定就挂了。此时,最好是前台stringify转换成json字符串,后台用@RequestBody接受自动转换成想要的数据格式。
案例4:复杂List<User>
ajax
$("#test5").on("click",function(){
var users = [];
for(var i=0;i<10;i++){
var user = {
id:1,
username:"fangxin",
birthday:new Date(),
luckyNums:[1,2,3],
friends:[
{name:"zhangsan"},
{name:"lisi"}
]
};
users.push(user);
}
$.ajax({
type: "POST",
url:"/mvc/client1/test5/",
data: JSON.stringify(users),
contentType:"application/json"
})
});
java
/**
* 复杂List
*/
@RequestMapping("/test5")
@ResponseBody
public void test5(@RequestBody List<User> users){
for(User user:users){
System.out.println(user.getUsername());
}
}
用案例3的方式,依然可以接收到,屡试不爽。
案例5 List<Map<String,Obj>>更复杂对象
同理
ajax传递参数给springmvc总结[转]的更多相关文章
- ajax传递参数给springmvc
下面看一些传参的例子,基本涵盖了大部分的参数传递类型
- springMVC通过ajax传递参数list对象或传递数组对象到后台
springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...
- ASP.NET jquery ajax传递参数
第一种:GET传递 前台 ajax GET 传递 :即在请求的地址后面加上参数,URL地址长度有显示,安全性低 后台接收:Request.QueryString[“参数名字”]! 例如: func ...
- JQuery中$.ajax()方法参数详解 ASP.NET jquery ajax传递参数
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- 前端AJAX传递数组给Springmvc接收处理
前端传递数组后端(Spring)来接收并处理: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- ajax传递参数与controller接收参数映射关系
将ajax的参数传递至后台controller时,data 中的参数名要与controller中的形参保持一致. 前端ajax代码: 1 $.ajax({ 2 url:"/doLogin&q ...
- ajax 传递参数中文乱码解决办法
/********Start***********/ /*获取地址栏参数*/ function getRequest(){ var url = location.search; //获取url中&qu ...
- 原生态ajax 传递json参数到服务器端
案例说明:通过ajax将用户名和密码以json形式传递给服务器端,然后服务器端接受数据,进行处理返回json数据到前端 首先,在客户端,通过JavaScript脚本将页面表单数据封装成JSON格式.L ...
- Spring Mvc 传递参数要controller出现了400,日期参数全局处理,格式化yyyy-MM-dd 和yyyy-MM-dd HH:mm:ss
描述:今天做一个业务操作的时候,ajax传递参数要controller出现了400,前后台都没有报错. 问题:springmvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误 解决: ...
随机推荐
- MySql(十):MySQL性能调优——MySQL Server性能优化
本章主要通过针对MySQL Server( mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的参数优 ...
- [转]如何禁止 IIS 在 C:\Windows\System32\LogFiles\HTTPERR 中生成日志文件
1. 在注册表 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters 中新建 dword 值:EnableError ...
- iOS上的http请求:get、post以及同步、异步
1.get: view sourceprint" class="item about" style="color:rgb(51,51,51); text-dec ...
- mybatis 对象关系映射例子
入门 http://legend2011.blog.51cto.com/3018495/908956 增删改 http://legend2011.blog.51cto.com/3018495/9130 ...
- LeetCode——4Sum & 总结
LeetCode--4Sum & 总结 前言 有人对 Leetcode 上 2Sum,3Sum,4Sum,K Sum问题作了总结: http://blog.csdn.net/nanjunxia ...
- What-are-P-NP-NP-complete-and-NP-hard
https://www.amazon.com/Computational-Complexity-Approach-Sanjeev-Arora/dp/0521424267 http://theory.c ...
- javascript基础拾遗(九)
1.class关键字 ES6引入了新的class关键字编写对象 function Language(name){ this.name = name this.score = 8.0 } Languag ...
- 【嵌入式】FS2410非操作系统外围资源测试
在刚接触FS2410时,其实这个测试也没有多大意义,但是对于以后来说,当一个产品做成功时,产品测试还是一个必须经过的一个阶段,所以这个流程还是有必要走一下! 在非操作系统下,主要进行RTC测试,按键测 ...
- Docker 入门(Mac环境)- part 3 服务(services)
part-3 服务(services) 简介 一个应用的规模的扩大是很常见的事情,会经常用到负载均衡这些,如要实现这些功能,我们就会用到docker中更高一层的东西-service(服务). 比如说一 ...
- 解决chrome extension无法下载的问题
由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...