Spring4新特性――JSR310日期时间API的支持 - 开涛的博客 - ITeye技术网站
spring4提供了对jsr310的支持,只要能发现如java.time.LocalDate,DefaultFormattingConversionService就会自动注册对jsr310的支持;对于ConversionService请参考:
SpringMVC数据格式化――第七章 注解式控制器的数据验证、类型转换及格式化――跟着开涛学SpringMVC
我们只需要在实体/Bean上使用DateTimeFormat注解:
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime dateTime;
- @DateTimeFormat(pattern = "yyyy-MM-dd")
- private LocalDate date;
- @DateTimeFormat(pattern = "HH:mm:ss")
- private LocalTime time;
比如我们在springmvc中:
- @RequestMapping("/test")
- public String test(@ModelAttribute("entity") Entity entity) {
- return "test";
- }
当前端页面请求:
localhost:9080/spring4/test?dateTime=2013-11-11 11:11:11&date=2013-11-11&time=12:12:12
会自动进行类型转换。
另外spring4也提供了对TimeZone的支持;比如在springmvc中注册了LocaleContextResolver相应实现的话(如CookieLocaleResolver),我们就可以使用如下两种方式得到相应的TimeZone:
RequestContextUtils.getTimeZone(request)
LocaleContextHolder.getTimeZone()
不过目前的缺点是不能像Local那样自动的根据当前请求得到相应的TimeZone,如果需要这种功能需要覆盖相应的如CookieLocaleResolver中的如下方法来得到:
- protected TimeZone determineDefaultTimeZone(HttpServletRequest request) {
- return getDefaultTimeZone();
- }
另外还提供了DateTimeContextHolder,其用于线程绑定DateTimeContext;而DateTimeContext提供了如:Chronology、ZoneId、DateTimeFormatter等上下文数据,如果需要这种上下文信息的话,可以使用这个API进行绑定。比如在进行日期格式化时,就会去查找相应的DateTimeFormatter,因此如果想自定义相应的格式化格式,那么使用DateTimeContextHolder绑定即可。
源代码请参考github项目:spring4-datetime-jsr310
Read full article from Spring4新特性――JSR310日期时间API的支持 - 开涛的博客 - ITeye技术网站
No comments:
Post a Comment