Spring MVC中时间数据无法实现自动转换绑定的问题

第一种:使用注解:

    @DateTimeFormat(pattern="yyyy-MM-dd")

此注解需要配置 < mvc:annotation-driven/>标签
第二种:

通过自定义的编辑器实现日期格式的转换,
使用@InitBinder装配自定义编辑器,
标注了@InitBinder注解的方法会在控制器初始化时调用,
编写一个用于 初始化的类

public class BaseController {
	/**
	 * 使用@InitBinder解决SpringMVC日期类型无法绑定的问题
	 * @param dataBinder
	 */
	@InitBinder
	public void initBinder(WebDataBinder dataBinder){
		dataBinder.registerCustomEditor(Date.class, 
				new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
	}
}

随后在控制层的controller继承此类即可。

public class UserController extends BaseController{

第三种: 使用ConversionService
Spring类型转换体系的核心接口,
解决前台form表单中时间字符串到后台Date数据类型的转换问题,
编写自定义转换器,自定义转换的规则,实现日期格式的转换

1.使用Converter转换接口
作用:将一种类型转换成另一种类型的对象 方法:convert()

2.自定义转换器( StringToDateConverter.java )
实现convert()方法:完成字符串到java.util.Date类型指定格式的转换

3.装配自定义的ConversionService

实现步骤
1.编写转换器StringToDateConverter ,实现Converter接口

public class StringToDateConverter implements Converter<String, Date> {
	private String datePattern;
	public StringToDateConverter(String datePattern){
	//	System.out.println("StringToDateConverter convert ============== " + datePattern );
		this.datePattern = datePattern;		
	}
	@Override
	public Date convert(String s) {
		// TODO Auto-generated method stub
		Date date = null;
		try {
			date =  new SimpleDateFormat(datePattern).parse(s);
			System.out.println("StringToDateConverter convert date ===== > " + date);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return date;
	}

2.在SpringMVC的配置文件中编写ConversionService的配置类

 <bean id="myConversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="smbms.tools.StringToDateConverter">
                    <constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
                </bean>
            </list>
        </property>
    </bean>

3.在annotation-driven配置中指定conversion-service为自己刚刚写的myConversionService,覆盖掉SpringMVC默认实现的conversionService

	<mvc:annotation-driven conversion-service="myConversionService">
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值