参数绑定
将客户端传来的 key/value
数据,绑定到 Controller
参数的过程 ;
这一过程发生在调用 处理器适配器
的时候,spring
会去调用 参数绑定
组件,我使用的版本(4.5
),是使用 converter
进行任意支持类型的转换的,除去一些 时间
不能进行转换 ;
其实 spring
中内置了许多的 converter
,可以看做是转换器,帮我们进行参数绑定 ;
-
默认支持类型
默认支持的类型:
HtppServletRequest
、HtppServletResponse
、HttpSession
、Model或ModelMap
;当springMvc
发现Controller
方法的形参是上面的类型时,就会调用响应的converter
进行参数绑定 ; -
对简单类型的支持
当
controller
方法形参是简单类型的时候,SpringMvc
也会进行参数绑定,不过有个限制,形参的名字和key
的名字要一样 ;对于,这样的限制,我们当然不能忍受了,我们才是
code world
的掌控者,怎么能受限于一个参数绑定,这时候可以使用@RequestParam
来破掉这一限制 ;@RequestParam
参数讲解:name
:当形参名字和key
不一样的时候 ,使用name
来告诉springMvc
给我进行参数绑定,按照和name
相同的key
;required
: 表示形参是否是必须的 ,如果 不是必须的,则可以不传参数进来 ;defaultValue
:默认值 ,如果形参没有参数传进来,则使用该默认值 ; -
pojo类型
页面中提交的数据的名字,必须和
pojo
的属性名一致 ;页面中提交的数据的名字,必须和pojo
的属性名一致 ;比如,
pojo
中有个name
属性,那么页面中的对应数据想要参数绑定到pojo
对象中,则key
必须也是name
;比如,pojo
中有个name
属性,那么页面中的对应数据想要参数绑定到pojo
对象中,则key
必须也是name
;比如,pojo
中有个name
属性,那么页面中的对应数据想要参数绑定到pojo
对象中,则key
必须也是name
;比如,pojo
中有个name
属性,那么页面中的对应数据想要参数绑定到pojo
对象中,则key
必须也是name
; -
自定义参数绑定
对于一些情况下 ,
springMvc
内置的converter
总是不能满足的我们需求,我们需要自定义参数绑定 ,比如时间类型的参数绑定 ;实现
org.springframework.core.convert.converter.Converter
,注意不要导错包 ;/**
* 完成日期 的参数绑定
* @author An
* @date 2018年9月17日20:11:59
*/
public class DateConverter implements Converter<String,Date> { /**
* 日期转换类
*/
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd") ; @Override
public Date convert(String source) {
try {
return simpleDateFormat.parse(source) ;
} catch (ParseException e) {
e.printStackTrace();
}
// 转换失败,就返回 null ;
return null ;
}
}在
springMvc.xml
中进行配置<!--使用注解的映射器、适配器-->
<!-- 添加 conversion-service 配上下面的id -->
<mvc:annotation-driven conversion-service="conversionService"/> <!--配置 自定义 参数绑定-->
<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="conversionService">
<!--写上自定义的转换器-->
<property name="converters">
<list>
<!--日期 转换 -->
<bean class="xin.ijava.ssm.converter.DateConverter"/>
</list>
</property>
</bean> -
包装类型
pojo
参数绑定其实和
pojo
类型一样 ;只是包装类型的
pojo
中嵌套着pojo
,此时赋值,使用嵌套的pojo.属性名
,作为网页的name
属性的值 ;<input id="itemName" type="text" name="itemCustomer.name"/>
尽量使用包装类型,便于扩展,解决不同类之间属性重名问题 ,比如形参有
user
、book
,它们都有属性name
,此时页面中就可以使用pojo.name
为它们赋值; -
数组绑定
形参是数组的时候,跟基本数据类型一样,形参的名字 和 网页
name
值一样; -
list 绑定
list
绑定,将list
放在pojo
中进行绑定,也就是pojo
中属性为list
,此时形参还是一个包装的pojo
;要将数据提交到
list
中的对象的属性上,只需要将网页的name
的值,设为list[下标].属性
; -
map 绑定
还是将
map
放在pojo
中进行绑定,网页上的name
属性的值为map['key']
;
(八)springMvc 的参数绑定的更多相关文章
-
springmvc(2)--参数绑定
一.以实例来看springmvc各种参数绑定方式 先定义个dto类: public class RestInDto implements Serializable { private static ...
-
(转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...
-
SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
-
SpringMVC学习--参数绑定
spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接收 ...
-
SpringMVC(三) —— 参数绑定和数据回显
参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...
-
springmvc(三) 参数绑定、
前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...
-
SpringMVC【参数绑定、数据回显、文件上传】
前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定.. ...
-
SpringMVC中参数绑定
SpringMVC中请求参数的接收主要有两种方式, 一种是基于HttpServletRequest对象获取, 另外一种是通过Controller中的形参获取 一 通过HttpServletReque ...
-
SpringMVC高级参数绑定(数组和List)
本节内容: 参数绑定之数组 将表单的数据绑定到List 复制下上篇博客中的工程,作为今天开发的工程. 一.参数绑定之数组 1. 需求 在商品列表页面选中多个商品,然后删除. 2. 需求分析 功能要求商 ...
随机推荐
-
thinkphp的学习笔记
# Thinkphp ## 什么是框架?(框架开发)> 框架就是通过提供一个开发Web程序的基本框架(比如提供了分页类.数据库操作类.文件操作类等),使用框架可以减少开发者代码的编写.> ...
-
mysql 语法总结
设置SQL语句所用的字符编码:set names UTF8; 判断指定的数据库是否存在:DROP DATABASE IF EXISTS 库; 开始使用指定的数据库:USE 库; 创建数据库CREAT ...
-
Linux Program
vhost : web.myftp.com storage.myftp.com ...... not vhost : storage.myftp.com eg : top eg : htop eg : ...
-
java之生产者与消费者
package com.produce; import java.util.LinkedList; import java.util.Queue; /*@author shijin * 生产者与消费者 ...
-
jquery json遍历和动态绑定事件
<div id='tmpselectorList' style='border: 1px solid grey;max-height: 150px;position:absolute;text- ...
-
Xcode集成Google Test
Xcode集成Google Test 1.下载源代码https://github.com/google/googletest 2.进入下载文件目录下googletest/make中运行make gte ...
-
【转】oracle数据库NUMBER数据类型
原文:http://www.jb51.net/article/37633.htm NUMBER ( precision, scale)a) precision表示数字中的有效位;如果没有指定prec ...
-
ubuntu server编译安装nginx
刚刚安装好了ubuntu server14.04,如今要安装一个webserver,纯静态就用nginx应用程序server吧,性能出众啊. 安装编译环境 我们这里採用源代码编译安装的方式,大家能够看 ...
-
水声通信(传声)于iOS、Android在情景-depth分析(包括一些声通信源)
最近的水声通信非常热,特别是,非常嵌入式设备备受瞩目使用,前段时间公布了声通信部分源代码(iOS和Android版本号.下载源的最新版本:点击打开链接 http://download.csdn.net ...
-
javascript动画:velocity.js学习
第二章:基础知识 一.velocity和jQuery: Velocity函数是独立于jQuery的,但两者可以结合使用.通常这么做的好处是可以利用jQuery的链式操作:当你先用jQuery选择了一个 ...