基础类型

原始类型:id必须要传,否则报错。

@RequestMapping("/test")
@ResponseBody
public ResponseData test(int id) {}

包装类型:id可以不传,后台接受到null。

@RequestMapping("/test")
@ResponseBody
public ResponseData test(Integer id) {}

list&set

简单类型

前台

form表单

<form action="${ctx}/test/test" method="post">
<input type="text" name="ids">
<input type="text" name="ids">
<input type="text" name="ids">
<input type="submit">
</form>

ajax

var data = [];
data.push(1);
data.push(2);
data.push(3);
$.ajax({
url: ctx + "/test/test",
traditional:true,//必要
data: {ids: data},
success: function (result) {
alert(result);
}
})

后台

@RequestMapping("/test")
@ResponseBody
public ResponseData test(@RequestParam List<Integer>ids) {}

复杂类型

list<User>users:(略)同json格式对象

数组

前台

form表单

<form action="${ctx}/test/test" method="post">
<input type="text" name="ids">
<input type="text" name="ids">
<input type="text" name="ids">
<input type="submit">
</form>

ajax

var data = [];
data.push(1);
data.push(2);
data.push(3);
$.ajax({
url: ctx + "/test/test",
traditional:true,//必要
data: {ids: data},
success: function (result) {
alert(result);
}
})

后台

@RequestMapping("/test")
@ResponseBody
public ResponseData test(Integer[]ids) {
}

map

前台

form

<form action="${ctx}/test/test" method="post">
<input type="text" name="name">
<input type="text" name="sex">
<input type="submit">
</form>

ajax

var data = {name:"zhangsan",sex:"man"};
$.ajax({
url: ctx + "/test/test",
data:data,
success: function (result) {
alert(result);
}
});

后台

@RequestMapping("/test")
@ResponseBody
public ResponseData test(@RequestParam Map<String,String> params) {}

pojo简单属性

前台

form

<form action="${ctx}/test/test" method="post">
<input type="text" name="name">
<input type="text" name="sex">
<input type="submit">
</form>

ajax

var data = {name:"zhangsan",sex:"man"};
$.ajax({
url: ctx + "/test/test",
data:data,
success: function (result) {
alert(result);
}
});

后台

@RequestMapping("/test")
@ResponseBody
public ResponseData test(User user) {}
public class User{
private String name;
private String sex;
//get and set ...
}

pojo包含list

前台

form

<form action="${ctx}/test/test" method="post">
<input type="text" name="userName" value="zhangsan">
<input type="text" name="sex" value="123">
<input type="text" name="posts[0].code" value="232"/>
<input type="text" name="posts[0].name" value="ad"/>
<input type="text" name="posts[1].code" value="ad"/>
<input type="text" name="posts[1].name" value="232"/>
<input type="submit">
</form>

ajax

var user={userName:"zhangsan",password:"123"};
user['posts[0].name']="ada";
user['posts[0].code']="ada";
user['posts[1].name']="ad";
user['posts[1].code']="ad2323a";
$.ajax({
url: ctx + "/test/test",
type:"post",
contentType: "application/x-www-form-urlencoded",
data:user,
success: function (result) {
alert(result);
}
});

后台

public class User{
private String name;
private String sex;
private List<Post> posts;
//get and set ...
}
public class Post {
private String code;
private String name;
//get and set ...
}
@RequestMapping("/test")
@ResponseBody
public ResponseData test(User user) {}

date类型

使用注解方式

绑定单个方法

对于传递参数为Date类型,可以在参数前添加@DateTimeFormat注解。如下:

@RequestMapping("/test")
public void test(@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date date){}

如果传递过来的是对象,可以在对象属性上添加注解。

@RequestMapping("/test")
public void test(Person person){} Public class Person{
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
Private Date date;
Private String name;
}
绑定整个controller的所有方法:
@Controller
public class FormController { @InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
}
@Controller
public class FormController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addCustomFormatter(new DateFormatter("yyyy-MM-dd"));
}
}

使用PropertyEditor方式

使用ConversionService方式

参考:

https://www.2cto.com/kf/201501/374062.html

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-initbinder

枚举类型

mvc配置文件添加:

 <!--枚举类型转化器-->
<bean id="formattingConversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="org.springframework.core.convert.support.StringToEnumConverterFactory"/>
</set>
</property>
</bean>

参考:

Spring Boot绑定枚举类型参数

Spring MVC 自动为对象注入枚举类型

json格式对象

后台

@RequestMapping(value = "introductionData.do", method = {RequestMethod.POST})
@ResponseBody
public RestResult introductionData(@RequestBody SignData signData) {
}
public class SignData {
private ApplicationInformation applicationInformation;
private ApplyUserInformation applyUserInformation;
private StudentInformation studentInformation;
private List<VolunteerItem> volunteerItems;
private ResidencePermit residencePermit;
private List<Family> families;
//get and set ...
}

前台

var data = {}
var applyUserInformation = {
"applyName": APPLYNAME,
"applyCardType": "0",
"applyCardID": APPLYIDCARD,
"applyMobile": APPLYMOBILE
};
var applicationInformation = {
"live_address": nowaddress,
"addressJZArea": addressJZArea,
"schoolLevel": schoolLevel,
"schoolType": schoolType,
"applyName": APPLYNAME,
"contacts": contacts,
"contactNumber": contactNumber
};
var studentInformation = {
"cardType": cardType,
"cardID": cardID,
"studentName": studentName,
"studentType": studentType,
"studentType1": studentSpecialCase,
"isDisability": "0",
"studentCategory": "0",
"birthday":birthday,
"graduationschool":SchoolName,
"graduationclass":classNameinfo,
"applyName": APPLYNAME
};
data["applyUserInformation"] = applyUserInformation;
data["applicationInformation"] = applicationInformation;
data["studentInformation"] = studentInformation; $.ajax({
url: ctx + '/overseasData.do',
type: "post",
data: JSON.stringify(data),
contentType: "application/json;charset=utf-8",
success: function (result) {}
})

参考:https://blog.csdn.net/qq_29663071/article/details/68922043

spring mvc 参数绑定的更多相关文章

  1. spring mvc参数绑定

    spring绑定参数的过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接 ...

  2. Spring MVC参数绑定(如何接收请求参数及返回参数)

    在SpringMVC interceptor案例实践中遇到了获取jsp表单传递参数失败的问题,怎么的解决的呢?下面详细介绍. 先讲述下https://www.cnblogs.com/ilovebath ...

  3. spring mvc: 资源绑定视图解析器(不推荐)

    spring mvc: 资源绑定视图解析器(不推荐) 不适合单控制器多方法访问,有知道的兄弟能否告知. 访问地址: http://localhost:8080/guga2/hello/index 项目 ...

  4. spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping

    spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...

  5. Spring MVC资源绑定视图解析器

    ResourceBundleViewResolver使用属性文件中定义的视图bean来解析视图名称. 以下示例显示如何使用Spring Web MVC框架中的ResourceBundleViewRes ...

  6. Spring MVC 参数的绑定方法

    在Spring MVC中,常见的应用场景就是给请求的Url绑定参数.本篇就介绍两种最最基本的绑定参数的方式: 基于@RequestParam 这种方法一般用于在URL后使用?添加参数,比如: @Req ...

  7. spring自定义参数绑定(日期格式转换)

    spring参数绑定时可能出现 BindException(参数绑定异常),类似下面的日期绑定异常(前台传过来是String类型,实际的pojo是Date类型) default message [Fa ...

  8. Spring MVC参数处理

    使用Servlet API作为参数 HttpServletRequest HttpServletResponse HttpSession 使用流作为参数 总结 Spring MVC通过分析处理处理方法 ...

  9. spring mvc 参数

    Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求. 在MVC框架中,Struts属于V ...

随机推荐

  1. Python3学习的准备工作

    简单好用的桌面开发平台:ubuntu 16.x/18.x 或 LinuxMint 18.x 开发工具:新版操作系统都自带有Python3.5及更高版本 其实作为初学者,不要迷信版本,也不必着急升级成最 ...

  2. Android屏幕亮度调节相关源码

    如下代码内容是关于Android屏幕亮度调节相关的代码. public static boolean isAutoBrightness(ContentResolver aContentResolver ...

  3. JAVA\Android 多线程实现方式及并发与同步

    转载:https://blog.csdn.net/csdn_aiyang/article/details/65442540 概述     说到线程,就不得不先说线程和进程的关系,这里先简单解释一下,进 ...

  4. golang初识5 - interface

    1. interface-new (1) abstract format: type abstractName interface { method_name1 [return_type] } (2) ...

  5. 一个WPF只能输入数字的行为。

    没啥好说的,直接上代码: public class NumberInputBehaviour : Behavior<TextBox> { protected override void O ...

  6. ECMAScript 6 新特性-set。const

    一.let命令是es6新增的特性,作用与var命令类似,声明变量,不同之处在于声明的变量的作用域为块级作用域.引入let后带来了很多新的特性. 1作用域,es5之前之后函数作用域和全局作用域,let的 ...

  7. DLC 基本逻辑运算

    逻辑代数:分析设计数字电路的数学基础是逻辑代数 变量的取值只能是 0 1 逻辑代数中只有三种基本逻辑运算,即 与 或 非 与逻辑运算: 只有决定一件事情的全部条件都具备时,这事件才成立.这样的因果关系 ...

  8. H5-meta标签使用大全

    meta标签有下面的作用:搜索引擎优化(提高搜索性能),控制页面功能化. meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name属性. 1.name属性 name属 ...

  9. [PHP]正则表达式判断网址

    来源:https://segmentfault.com/q/1010000000584340/a-1020000000584362 Markdown 的作者之一写的正则表达式(原文在这) (?i)\b ...

  10. thinkphp5.1 使用success();和error();要注意的点

    public function succ() { $this->success(); $this->error(); } 这里的$this-> 老是忘掉 记录一下