类型转换可以将请求参数转换为指定的类型、指定的格式(数据的格式化),然后传给业务方法的参数。

Spring MVC内置了常用的类型转换器。如果内置的类型转换器满足不了需求,可以使用自定义的类型转换。

自定义类型转换有2种方式:

  • 使用Converter
  • 使用Formatter

Converter方式

(1)新建包com.chy.converter,包下新建类DateConverter,作为自定义的类型转换器

// 需要实现Converter接口,<原始类型,目标类型>
public class DateConverter implements Converter<String, Date> { //参数是请求参数中的原始数据,返回值是转换好的数据(目标类型)
@Override
public Date convert(String source) {
// 经过一些操作,将原始类型的数据,转换为目标类型的数据并返回
// ......
} }

(2)在spring mvc的配置中添加:

    <!--配置ConversionService-->
<bean name="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!--使用集合传入自定义的converter-->
<property name="converters">
<set>
<!--一个bean对应一个类型转换器-->
<bean class="com.chy.com.chy.converter.DateConverter" />
</set>
</property>
</bean> <!--指定要使用的ConversionService-->
<mvc:annotation-driven conversion-service="conversionService" />

Formatter方式

(1)新建包com.chy.converter,包下新建类DateFormatter

// 需要实现Converter接口,<目标类型>
public class DateConverter implements Formatter<Date> {
//parse()是转换,将原始类型转换为目标类型,参数是原始类型(String)
@Override
public Date parse(String source, Locale locale) throws ParseException { } //print()是格式化输出,将目标类型转换为指定格式的字符串,参数是parse()转换好的目标类型
@Override
public String print(Date date, Locale locale) { }
}

Formatter的类型转换、数据格式化是分开的,写在2个方法里。

(2)在spring  mvc的配置中添加:

    <!--配置ConversionService-->
<bean name="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<!--使用集合传入自定义的formatter-->
<property name="formatters">
<set>
<!--一个bean对应一个formatter-->
<bean class="com.chy.com.chy.converter.DateConverter" />
</set>
</property>
</bean> <!--指定要使用的ConversionService-->
<mvc:annotation-driven conversion-service="conversionService" />

踩过的坑:

xmlns:mvc="http://www.springframework.org/schema/cache"

IDEA自动导入的约束不对,将cache改为mvc,xsi中对应的部分也要改。

SpringMVC 自定义类型转换的更多相关文章

  1. SSM框架之SpringMVC(2)参数绑定及自定义类型转换

    SpringMVC(2)参数绑定及自定义类型转换 1.请求参数的绑定 1.1. 请求参数的绑定说明 1.1.1.绑定机制 表单提交的数据都是k=v格式的 username=haha&passw ...

  2. 05 SpringMVC:02.参数绑定及自定义类型转换&&04.SpringMVC返回值类型及响应数据类型&&05.文件上传&&06.异常处理及拦截器

    springMVC共三天 第一天: 01.SpringMVC概述及入门案例 02.参数绑定及自定义类型转换 03.SpringMVC常用注解 第二天: 04.SpringMVC返回值类型及响应数据类型 ...

  3. springmvc的类型转换

     一.springmvc的类型转换 (一)默认情况下,springmvc内置的类型转换器只能 将"yyyy/MM/dd"类型的字符串转换为Date类型的日期 情境一: 而现在我们无 ...

  4. 【.NET深呼吸】基础:自定义类型转换

    照例,老周在开始吹牛之前,先讲讲小故事,这是朋友提出的建议,老TMD写技术有什么了不起的,人人都会写.后来老周想想,也确实,代码谁不会写,能写到有品位有感悟,就不容易做到.于是,老周接受了该朋友的建议 ...

  5. AutoMapper搬运工之自定义类型转换

    前言 最近还挺忙,还有点累,一直都没更新了,实在是懒呀.正题之前先说点别的,最近公司要扩张了,需要大量开发,领导说推荐有钱可以拿,如此好机会,我就趁机做个广告.ShippingRen.com招募.NE ...

  6. 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换

    [源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...

  7. Struts2自定义类型转换,和处理类型转换错误

    Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...

  8. spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二)

    spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二) >>>>>>>>>>>>>>&g ...

  9. spring参数类型异常输出,SpringMvc参数类型转换错误输出

    spring参数类型异常输出, SpringMvc参数类型转换错误输出 >>>>>>>>>>>>>>>> ...

随机推荐

  1. The Preliminary Contest for ICPC Asia Xuzhou 2019 B. so easy (unordered_map+并查集)

    这题单用map过不了,太慢了,所以改用unordered_map,对于前面删除的点,把它的父亲改成,后面一位数的父亲,初始化的时候,map里是零,说明它的父亲就是它本身,最后输出答案的时候,输出每一位 ...

  2. python 的集合

    set  的特点: 把不同的元素组合在一起,元素值必须是可哈希不可变的 set 的创建 s = set ('alex li') print(s) 表现形式:去重 {'e', 'i', ' ', 'l' ...

  3. Scrapy模拟登陆

    1. 为什么需要模拟登陆? #获取cookie,能够爬取登陆后的页面 2. 回顾: requests是如何模拟登陆的? #1.直接携带cookies请求页面 #2.找接口发送post请求存储cooki ...

  4. go.php

    <?php $t_url=$_GET['url']; if(!empty($t_url)) { preg_match('/(http|https):\/\//',$t_url,$matches) ...

  5. sort的使用

    sort主要是用来排序的,可以用自定义的函数进行比较,也可以用系统的4中函数进行比较,即less(),greater(),less_equal(),greater_equal().但是我试了一下,发现 ...

  6. Python基础(一) Python3环境搭建

    转载清注明原文地址,谢谢. OS:Windows 10 第一步,从Python官方下载安装包 Windows端下载地址:https://www.python.org/downloads/windows ...

  7. springmvc基于java配置的实现

    该案例的github地址:https://github.com/zhouyanger/demo/tree/master/springmvc-noxml-demo 1.介绍 之前搭建SpringMvc项 ...

  8. 探讨 Git 代码托管平台的若干问题

    关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...

  9. SVM的优缺点

    优点 可用于线性/非线性分类,也可以用于回归,泛化错误率低,也就是说具有良好的学习能力,且学到的结果具有很好的推广性. 可以解决小样本情况下的机器学习问题,可以解决高维问题,可以避免神经网络结构选择和 ...

  10. python 环境迁移之requirements.txt (window环境)

    一.背景 1.有时候你本地用python编写代码,然后本地也安装了很多的库,那么你要迁移到服务器上,那么该怎么快速弄环境库呢?           #第二,三步就可以解决. 2.有时候你本地用pyth ...