spring配置Converter、Formatter日期转换器
最近有点恶补spring的嫌疑,然后学了一点知识点纪录在此。
往往在项目中我们会遇到前端页面输入一个日期类型的字符串传递到后端后我们需要去做转换。甚至在传递的过程中就会报错。
Spring有一个一劳永逸的办法,配置好按照自己的规则转换后就不需要再java后端继续转换了
需要spring的jar可以到spring官方网站去下载。
1.首先第一种 convertor转换器
package com.converter; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import org.springframework.core.convert.converter.Converter; public class StringDate implements Converter<String, Date>{ // 日期转换格式
private String pattern;
// 构造函数
public StringDate(String pattern) {
super();
this.pattern = pattern;
} @Override
public Date convert(String arg0) {
// yyyy-MM-dd
SimpleDateFormat sd = new SimpleDateFormat(pattern);
try {
return sd.parse(arg0);
} catch (ParseException e) {
//e.printStackTrace();
throw new IllegalAccessError("日期转换出错!!");
}
} }
需要在springMVC-servlet.xml配置文件中配置一下内容 (springMVC-servlet文件具体的可以查看我的上一篇文章 springMVC+springJDBC+Mysql注解模式)
<!-- 日期转换工厂 -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.converter.StringDate">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg>
</bean>
</list>
</property>
</bean>
2.第二种方式 Formatter转换器
package com.converter2; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale; import org.springframework.core.convert.converter.Converter;
import org.springframework.format.Formatter; /**
* 日期类型转换器
* @author Administrator
*
*/
public class StringDate2 implements Formatter<Date>{ // 日期转换格式
private String pattern;
private SimpleDateFormat sd; // 构造函数
public StringDate2(String pattern) {
super();
this.pattern = pattern;
sd = new SimpleDateFormat(pattern);
} @Override
public String print(Date object, Locale locale) {
//加上这句话 就需要按照日期规范去转 类似1999-15-15就会报错
sd.setLenient(false);
return sd.format(object);
}
@Override
public Date parse(String text, Locale locale) throws ParseException {
sd.setLenient(false);
return sd.parse(text);
} }
需要在springMVC-servlet.xml配置文件中配置一下内容
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<list>
<bean class="com.converter2.StringDate2">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg>
</bean>
</list>
</property>
</bean>
以上方式只要在页面输入指定格式 value="yyyy-MM-dd" 的字符串然后发送请求并且将参数带到controller中spring就会自动转换为日期类型
spring配置Converter、Formatter日期转换器的更多相关文章
- springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式 & Springboot配置日期转换器
1. Springboot上传文件 springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样 @RequestMapping("/uploadPicture&q ...
- SpringMVC配置全局日期转换器,处理日期转换异常
Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常链接地址: https://www.2cto.com/kf/201308/236837.html spring3.0配置日期转换可 ...
- springmvc 日期转换器
package com.xxx.common.controller.converter; import org.joda.time.DateTime; import org.joda.time.for ...
- SpringMVC 自定义全局日期转换器
第一步: 编写自定义转换器的类 /* * 自定义日期转换器 */ public class CustomDateConverter implements Converter<String, Da ...
- spring的2种类型转换器
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- spring配置详解
1.前言 公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包.在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持 ...
- 【Java Web开发学习】Spring配置数据源
Spring配置数据源 转载:https://www.cnblogs.com/yangchongxing/p/10027495.html =============================== ...
- SpringMVC自定义日期转换器
一.创建自定义日期转换器类 1 public class StringToDateConverter implements Converter<String,Date> { 2 @Over ...
- Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...
随机推荐
- [LeetCode] Unique Binary Search Tree
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...
- [BZOJ 2006] 狼抓兔子
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1001 [算法] 最小割 [代码] #include<bits/stdc++.h ...
- 简单动态规划——最长公共子序列&&最长回文子序列&&最长上升||下降子序列
最长公共子序列,顾名思义当然是求两个字符串的最长公共子序列啦,当然,这只是一道非常菜的动规,所以直接附上代码: #include<iostream> #include<cstdio& ...
- 43. ExtJs控件属性配置详细
转自:https://www.cnblogs.com/mannixiang/p/6558225.html 序言: 1.本文摘自网络,看控件命名像是4.0以前的版本,但控件属性配置仍然可以借鉴(不 ...
- MVVMLight消息通知实现机制详解(二)
接上文 MVVMLight消息通知实现机制详解(一) 该工具的内部主要逻辑是以字典模式进行储存持有订阅对象设置的传入参数Type类型.Key值.Action.Target(订阅对象本身) 在发生订阅事 ...
- 能够完成qq信息提醒的代码
下面这个网址就帮咱们实现了QQ提醒的功能,别被它的外面吓坏,虽然是长的有点恶心,但是它可是一段“神奇代码”. http://qzs.qq.com/snsapp/app/bee/widget/open. ...
- Akka源码分析-Actor发消息(续)
上一篇博客我们分析道mailbox同时也是一个forkjointask,run方法中,调用了processMailbox处理一定数量的消息,然后最终调用dispatcher的registerForEx ...
- IE版本的判断
var Sys = {};var ua = navigator.userAgent.toLowerCase(); var s;(s = ua.match(/msie ([\d.]+)/)) ? Sys ...
- H5 标签属性、input属性
高亮文字: 全部商品只要<mark>6.18</mark> 结果: 加拼音文字: <ruby>變<rt>bian</rt></ ...
- SQL基本操作——select into与临时表
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中,常用于创建表的备份复件或者用于对记录进行存档. --制作 "Persons" 表的备份复件: SELECT ...