springMVC的 Converter转换器 和 Formatter
Converter转换器
spring的Converter是可以将一种类型转换成另一种类型的一个对象, 自定义Converter需要实现Converter接口
日期转换器
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.springframework.core.convert.converter.Converter;
- /**
- * 字符串日期格式转换器
- *
- */
- public class CustomGlobalStrToDataConverter implements Converter<String, Date>{
- private String datePattern;//日期格式
- //创建对象,并传入构造参数
- public CustomGlobalStrToDataConverter(String datePattern){
- this.datePattern = datePattern;
- }
- @Override
- public Date convert(String source) {
- try {
- Date date = new SimpleDateFormat(datePattern).parse(source);
- return date;
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- }
使用SpringMVC自定义的Converter, 需要在SpringMVC的配置文件中加入如下配置
- <!-- 注解驱动:替我们显示的配置了最新版的注解的处理器映射器和处理器适配器 -->
- <mvc:annotation-driven conversion-service="myConversionService"/>
- <!-- 配置自定义转换器 注意: 一定要将自定义的转换器配置到注解驱动上,id不能使用conversionService,不然会出现ArrayList<?>的异常-->
- <bean id="myConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
- <property name="converters">
- <set>
- <!-- 指定自定义转换器的全路径名称 -->
- <bean class="com.guorong.controller.converter.CustomGlobalStrToDataConverter">
- <constructor-arg name="datePattern" type="java.lang.String" value="yyyy-MM-dd hh:mm:ss"/>
- </bean>
- </set>
- </property>
- </bean>
Formatter
Formatter和Converter一样, 是将一种类型转换成另一种类型, 但是, Formatter的源类型必须是一个String, 目标类型是java类型.
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Locale;
- import org.springframework.format.Formatter;
- public class DateFormatter implements Formatter<Date>{
- private String datePattern;//日期格式字符串
- private SimpleDateFormat dateFormat;//日期格式类
- public DateFormatter(String datePattern) {
- this.datePattern = datePattern;
- dateFormat = new SimpleDateFormat(datePattern);
- }
- //将Date格式化为指定日期字符串,返回目标对象的字符串表示法
- @Override
- public String print(Date date, Locale locale) {
- return dateFormat.format(date);
- }
- //将字符串日期解析成Date对象
- @Override
- public Date parse(String source, Locale locale) throws ParseException {
- return dateFormat.parse(source);
- }
- }
springMVC配置文件
- <!-- 注解驱动: 替我们显示的配置了最新版的注解的处理器映射器和处理器适配器 -->
- <mvc:annotation-driven conversion-service="conversionService"/>
- <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
- <property name="formatters">
- <set>
- <bean class="com.guorong.controller.converter.DateFormatter">
- <constructor-arg name="datePattern" type="java.lang.String" value="yyyy-MM-dd"/>
- </bean>
- </set>
- </property>
- </bean>
选择Converter, 还是Formatter
Converter是一般工具, 可以将一种类型转换成另一种类型, 例如, 将String转换成Date, 或者Long转换成Date, Conveter既可以用在web层, 也可以用在其他层中, Formatter只能讲String转换层另一种java类型, 例如, 将String转换成Date, 但它不可能将Long转换成Date类型, 因此Formatter适用于web层, 因此, SpringMVC应用程序中, 选择Formatter比选择Converter更合适.
springMVC的 Converter转换器 和 Formatter的更多相关文章
- Converter(转换器)与Formatter(格式化) ,Validator(验证器)
Converter(转换器)与Formatter(格式化)都可以用于将一种对象类型转换为另一种对象类型.Converter是通用元件,可以在应用程序的任意层中使用,而Fotermatter这是专门为W ...
- SpringMVC自定义类型转换器
SpringMVC 自定义类型转换器 我们在使用SpringMVC时,常常需要把表单中的参数映射到我们对象的属性中,我们可以在默认的spring-servlet.xml加上如下的配置即可做到普通数据 ...
- springmvc的类型转换器converter
这个convter类型转换是器做什么用的? 他是做类型转换的,或者数据格式化处理.可以把数据在送到controller之前做处理.变成你想要的格式或者类型.方便我们更好的使用. 比如说你从前台传过来一 ...
- SpringMVC 自定义类型转换器
先准备一个JavaBean(Employee) 一个Handler(SpringMVCTest) 一个converters(EmployeeConverter) 要实现的输入一个字符串转换成一个emp ...
- 《SpringMVC从入门到放肆》十二、SpringMVC自定义类型转换器
之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView.返回List.Map等等,这里就包含了传 ...
- 14.SpringMVC核心技术-类型转换器
类型转换器 在前面的程序中,表单提交的无论是 int 还是 double 类型的请求参数,用于处理该请求 的处理器方法的形参, 均可直接接收到相应类型的相应数据,而非接收到 String 再手工转换. ...
- SpringMVC自定义日期转换器
一.创建自定义日期转换器类 1 public class StringToDateConverter implements Converter<String,Date> { 2 @Over ...
- springmvc——自定义类型转换器
一.什么是springmvc类型转换器? 在我们的ssm框架中,前端传递过来的参数都是字符串,在controller层接收参数的时候springmvc能够帮我们将大部分字符串类型的参数自动转换为我们指 ...
- Converter转换器使用
package com.xu.javabean; import java.lang.reflect.InvocationTargetException; import java.util.Date; ...
随机推荐
- BFSDFS模板
BFS模板: private static void bfs(HashMap<Character, LinkedList<Character>> graph,HashMap&l ...
- 【DRF版本控制】
目录 使用内置的URLPathVersioning类 使用自定义的版本控制类 "首先,我们开发的项目会有多个版本. 其次,我们的项目版本会随着更新越来越多,我们不可能因出了新版本就不维护旧版 ...
- AngularJS请求数据提示resource from url not allowed by $sceDelegate policy
AngularJS iframe跨域打开内容时报错 解决方案 使用 $sceDelegateProvider 配置跨域请求域名 config.js app.config(function($sce ...
- 方便的 IcoMoon 图标字体
官网地址:https://icomoon.io/app/#/select 已发现的方便之处: 1.官网已提供大量常用图标字体: 2.可通过 svg 将其转换为 图标字体: 3.不仅可转换,还可自定义编 ...
- Linux01——常用命令
帮助命令: man 一行一行显示 ,按下enter键就向下显示一行,按q退出 --help 全部显示 日期类:date ,cal 显示当前目录:pwd 切换目录:cd(***重点***) cd .. ...
- MyBatis操作mysql数据库查询出来是时间戳的问题
在pojo类中用java.sql.Date接收就能正常显示
- ubuntu 安装 gd
最近装一套系统,提示没开启GD, 1.首先检查一下,是否安装 新建一个文件 <?php phpinfo(); ?> 如果安装了,会在页面显示 2.没安装当然没有了 这个安装也是根据php版 ...
- Smart License
思科启动了通过构建思科智能软件管理器门户来简化客户许可管理的计划. 它可以帮助客户了解他们购买的许可证以及他们使用的许可证. 其他各种思科产品已经启用Smart Enabled,随着此版本(我这里学习 ...
- 微信HTTP公告
- JS中的Boolean对象
使用new操作符和Boolean(value)构造函数时,得到的并不是原始的true或false,而是一个对象,JS将对象视为真(true) var oBooleanTrue = new Boolea ...