基础类型

原始类型: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. Virtualbox扩展硬盘

    动态调整 1.VBoxManage showhdinfo win10.vdi 2.VBoxManage modifyhd win10.vdi --resize 61200 3.磁盘管理器中分配空间并格 ...

  2. meter命令行模式运行,实时获取压测结果 (没试过 说不定以后要用)

    jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式 上面一条命令应该可以满足大部分需求. 使用-R指定节点时,当然要首先在这些节点上启动jmeter-serv ...

  3. HTML 理解标签 - meta

    meta标签 , 常用的有以下几个属性: 1. name : 比较常见的一些属性 author: 就是这个文档的作者名称,可以用自由的格式去定义 description: 包括一个关于页面内容的缩略而 ...

  4. crf++实现中文分词简单例子 (Windows crf++0.58 python3)

    学习自然语言处理的同学都知道,条件随机场(crf)是个好东西.虽然它的原理确实理解起来有点困难,但是对于我们今天用到的这个crf工具crf++,用起来却是挺简单方便的. 今天只是简单试个水,参考别人的 ...

  5. [UE4]计算箭头方向:正切、SetRelativeRotation、RotationFromXVector、Get MotionController Thumbstick X

    正切 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 tanθ=y/x 余切函数 cotθ=x/y 正割函数 secθ=r/x 余割函数 cscθ=r/y   已知y和x,求角度θ: ...

  6. 涨姿势:Mysql 性能优化完全手册

    涨姿势:Mysql 性能优化完全手册 深入理解MySQL服务器架构 客户端层 MySQL逻辑架构整体分为三层,最上层为客户端层,诸如:连接处理.授权认证.安全等功能均在这一层处理. 中间层 MySQL ...

  7. Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理

    安装好centos7版本的系统后,发现默认的网卡名字有点怪,为了便于管理,可以手动修改.下面对centos7版本下网卡重命名操作做一记录:1)编辑网卡信息[root@linux-node2~]# cd ...

  8. ftp服务器使用-windowsftp服务起搭建

    首先打开控制面板选择程序 点击启动或关闭windows功能 勾选ftp服务器和IIS管理控制台点击确定 然后右键点击我的电脑,点击管理,然后点击本地用户和组,然后右键点击用户,点击新用户,创建一个用户 ...

  9. 使用shell解析脚本依赖关系,并自动补数

    将脚本依赖关系放到表中 使用shell解析脚本依赖关系,递归的计算各个脚本. #!/bin/bash # dm 补数 basepath=$(cd ``; pwd) cd $basepath sourc ...

  10. ssh免密登陆配置

    目录 ssh免密登陆 在A工作站上输入 B服务器上输入 登陆 ssh初次登陆询问 1.单次取消 2.ansible中增加链接参数 3.修改ansible配置参数[推荐] 4.修改服务器上的ssh_co ...