开发者社区> 程序界小强> 正文

SpringMVC自定义日期格式进行参数绑定

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
+关注继续查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010741376/article/details/46908979

配置文件里面先注册自定义转换器:

第一种配置:

	<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
	
<!-- 自定义日期参数绑定 -->
	<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	      <!-- 转换器 -->
	        <property name="converters">
	           <list>
	              <bean class="com.web.util.DateConverter"></bean>
	           </list>
	        </property>
	</bean>

第二种配置:

	<!--注解适配器 -->
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		 <property name="webBindingInitializer" ref="customBinder"></property> 
	</bean>
	
	<!-- 自定义webBinder -->
	<bean id="customBinder"
		class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
		<property name="conversionService" ref="conversionService" />
	</bean>
	<!-- conversionService -->
	<bean id="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<!-- 转换器 -->
		<property name="converters">
			<list>
				<bean class="com.web.util.DateConverter"/>
			</list>
		</property>
	</bean>




自定义转换器Converter:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.core.convert.converter.Converter;



public class DateConverter implements Converter<String,Date>{

	private static final List<String> formarts = new ArrayList<String>(4);
    static{
        formarts.add("yyyy-MM");
        formarts.add("yyyy-MM-dd");
        formarts.add("yyyy-MM-dd hh:mm");
        formarts.add("yyyy-MM-dd hh:mm:ss");
    }
	@Override
	public Date convert(String source) {
		 String value = source.trim();
	        if ("".equals(value)) {
	            return null;
	        }
	        if(source.matches("^\\d{4}-\\d{1,2}$")){ 
	            return parseDate(source, formarts.get(0));
	        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
	            return parseDate(source, formarts.get(1));
	        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
	            return parseDate(source, formarts.get(2));
	        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
	            return parseDate(source, formarts.get(3));
	        }else {
	            throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
	        }
	}
    
	public Date parseDate(String dateStr,String format){
		Date date=null;
		DateFormat dateFormat=new SimpleDateFormat(format);
		try {
			date=dateFormat.parse(dateStr);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return date;
		
	}
	public static void main(String[] args) {
		DateConverter date=new DateConverter();
		System.out.println(date.convert("2015-01-16"));
		
		
		
	}
	
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Activity绑定自定义视图
在安卓工程中,我们通过创建可以自动生成on_Create方法,这里面有个: setContentView(R.layout.activity_main);是系统自带的一个布局文件,但是在开发的过程中,有时可能需要我们自己去添加一个布局文件,那么,如何进行添加呢? 在ADT安卓工程目录左边的res目录下找到layout: 鼠标点击右键创建一个xml布局文件,然后输入自己自定义的布局文件的名字,点击finish完成即可。
759 0
也玩MVC3.0 Razor自定义视图引擎“.NET技术”来修改默认的Views目录结构
刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。 MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。
921 0
Asp.net MVC Preview 4 中自定义Jquery的HtmlHelper扩展
前两天介绍了mvc pv4中AjaxHelper的用法 的确是比较方便,不过也有其缺点,那就是并不是所有人都用Asp.net Ajax的,所以这样做还是显示出了ms的霸气   没办法,工程里都用的是JQuery于是先试写了2个小功能   先说使用方法吧,第一个功能是Ajax载入另个页面                c.
747 0
SSRS用自定义对象绑定报表
有一个报表的数据源是一个对象的List, 这个对象List中还有层级,其中还有其他的对象List,这样的层级有三层。其数据是从数据库中取出来的。其LINQ的操作太多了而且复杂,所以不太可 能从LINQ中挖掘出SQL语句了,只能从这个对象List作为报表数据源。
806 0
SpringBoot时间格式化的5种方法!(9)
SpringBoot时间格式化的5种方法!(9)
14 0
+关注
程序界小强
一个不仅仅会写代码的码农。。。
122
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载