Java初始化Datetime值_SpringMVC 处理Date类型数据@InitBinder @DateTimeFormat 注解 的使用...

使用SpringMVC的时候,需要将表单中的日期字符串转换成对应JavaBean的Date类型,而SpringMVC默认不支持这个格式的转换,解决方法有两种,如下:

方法一 . 在需要日期转换的Controller中使用SpringMVC的注解@initbinder和Spring自带的WebDateBinder类来操作。

/* 以下资料来自网络 */

用@InitBinder注解的控制器方法,允许你直接在你的控制器类中配置 Web 数据绑定。@InitBinder标记初始化WebDataBinder的方法,WebDataBinder被用于填充被注解的处理方法的命令和表单对象参数。

??   这些初始化绑定器(Init-binder)方法支持@RequestMapping方法支持的所有参数,处理命令/表单对象以及相关的校验结果对象。初始化绑定器方法必须不带返回值,所以它们通常被声明为 void 的。典型的参数包括WebDataBinder和WebRequest或 者java.util.Locale,允许用代码方式注册特定上下文的编辑器(context-specific editors)。

/* 以上资料来自网络 */

WebDataBinder是用来绑定请求参数到指定的属性编辑器.由于前台传到controller里的值是String类型的,当往Model里Set的数据是日期类型, Spring就会去找到对应的editor进行转换,将String类型转换成日期类型,然后再set进去.

我们要进行类型转换,需要在springMvc里配置配型转换器,springMvc提供了很多类型转化器,配置方法如下:

text/html; charset=utf-8

然后在需要进行类型转换的controller里创建初始化绑定器方法,用对应的编辑器将接受到的字符串转为日期,代码如下:

@Controllerpublic classMyFormController

{

@InitBinderprotected voidinitBinder(WebDataBinder binder)

{

SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");

dateFormat.setLenient(false);

binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));

}

}

spring mvc在绑定数据之前,都会先注册这些编辑器,Spring提供了很多编辑器的实现类,像CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等,使用时候调用WebDataBinder的registerCustomEditor方法.

需要注意的是,此初始化绑定的方法,只在该Controller内生效.

这样,我们前台传递的字符串日期信息,在后台javaBean中使用Date就可以直接接收到了.

方法二: 使用@DateTimeFormat 注解方式,建议使用,此方式简单,且代码量少

首先,@DateTimeFormat 注解使用到了joda包中的东西, 我们需要引入joda相关jar包.如果不引入会报异常

joda-time

joda-time

2.9.7

然后,我们要在javaBean 中要接收的Date类型数据上加上注解: 如下:

public classPerson{privateString name;privateInteger age;privateInteger sex;//在date类型上加入注解,同时指定接收到的日期格式样式

@DateTimeFormat(pattern="yyyy-MM-dd")privateDate birthday;

}

最后,在SpringMVC配置XML文件中进行注解驱动的配置:

text/html; charset=utf-8

这样就完成了,后续只要的新增的javaBean中给日期类型加上@DateTimeFormat注解即可,任意contorller中使用javaBean接受数据时,传递的String类型数据会自动转换成对应日期类型

需要注意的是 接收字符串的日期格式需要与@DateTimeFormat注解后定义的格式一致.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值