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语法格式错误 解决: ...
随机推荐
- 【转】在 XAML 的属性中,转义大括号 {}
我们知道大括号"{}"在XAML中是用来处理标记扩展的. 比如: <Button Content="{Binding}"/> 但如何转义而表示普 ...
- 腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH ...
- .net4.5使用async和await异步编程实例
关于异步编程的简单理解: 在.NET4.5中新增了异步编程的新特性async和await,使得异步编程更为简单.通过特性可以将这项复杂的工作交给编译器来完成了.之前传统的方式来实现异步编程较为复杂,这 ...
- 错误状态码URL重定向
server { listen 80; server_name www.espressos.com; location / { root /data0/www/bbs; index index.htm ...
- Let's Encrypt申请免费SSL证书
1.https的作用 安全,防止网站被劫持,数据被修改 2.Let's Encrypt是什么 Let's Encrypt是一个证书授权机构(CA),可以从Let's Encrypt获得网站域名的免费证 ...
- javascript基础拾遗(二)
1.对象定义 定义属性 var language = { name:'javascript', score:9.0 }; console.log(language.name) console.log( ...
- 每日英语:Proactive Advice for Dealing With Grief: Seek Out New Experiences
When her husband died of cancer 10 years ago, Becky Aikman says she experienced grief and adapted to ...
- Asp.Net微信支付接口之jsApiPay教程
1.微信支付JsApiPay只能在微信浏览器中使用 2.必须先申请微信支付功能 3.设置域名 4.设置支付授权目录 一定要精确到最后一级目录 5.获取APPID和AppSecret AppSecr ...
- Markdown学习(一)
先从了解开始. 1 什么是标记语言(Markup Language)? 可以参考下wiki Markup language:https://en.wikipedia.org/wiki/Markup_l ...
- script 页面在指定位置加载
<head> <script> function load(){window.location="#workspaces"} </script> ...