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

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. sqlmap 扫描注入漏洞

    .检测是否存在漏洞: sqlmap -u .获取数据库信息: sqlmap -u --dbs .数据库表信息: sqlmap -u -D security --tables .表中字段信息 sqlma ...

  2. 【C语言】(数组方式)求n名同学的平均成绩

    原理就不说了 代码: #include <stdio.h> int main() { ], sum = ; int i; printf("请输入5名童鞋的成绩:\n") ...

  3. android studio中project structure配置

    android studio project structure 1.project中填jdk路径 2.module中添androidsdk路径 3.sdks中填jdk路径

  4. js中的局部函数和全局函数的调用

    //局部函数和全局函数的特点 function fc1(){ var name ="chenhao"; function fc2(){ var age = 30; alert(na ...

  5. python快速入门及进阶

    python快速入门及进阶 by 小强

  6. springMVC的跳转

    服务器内部跳转: return "forward:/forward/test1";  或者 request.getRequestDispatcher(path).forward(r ...

  7. kongdashboard

    apiVersion: v1kind: Servicemetadata:  name: kong-dashboard  namespace: kongspec:  type: NodePort  po ...

  8. 路由器安全-NetFlow

    1.NetFlow介绍 提供高层次的诊断,分类和识别网络异常. 使用NetFlow来检查哪些行为改变明显的攻击是非常有效的. 就像Wiretap一样捕获数据包. NetFlow像电话账单.(谁和谁在通 ...

  9. NLP直播-1 词向量与ELMo模型

    翻车2次,试水2次,今天在B站终于成功直播了. 人气11万. 主要讲了语言模型.词向量的训练.ELMo模型(深度.双向的LSTM模型) 预训练与词向量 词向量的常见训练方法 深度学习与层次表示 LST ...

  10. 洛谷 P1886 滑动窗口(单调队列)

    嗯... 题目链接:https://www.luogu.org/problem/P1886 首先这道题很典型,是标准的单调队列的模板题(也有人说单调队列只能解决这一个问题).这道题可以手写一个队列,也 ...