Spring4新特性――JSR310日期时间API的支持 - 开涛的博客 - ITeye技术网站



Spring4新特性――JSR310日期时间API的支持 - 开涛的博客 - ITeye技术网站

spring4提供了对jsr310的支持,只要能发现如java.time.LocalDate,DefaultFormattingConversionService就会自动注册对jsr310的支持;对于ConversionService请参考:

SpringMVC数据格式化――第七章 注解式控制器的数据验证、类型转换及格式化――跟着开涛学SpringMVC 

 

我们只需要在实体/Bean上使用DateTimeFormat注解:

Java代码  收藏代码
  1. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")  
  2. private LocalDateTime dateTime;  
  3.   
  4. @DateTimeFormat(pattern = "yyyy-MM-dd")  
  5. private LocalDate date;  
  6.   
  7. @DateTimeFormat(pattern = "HH:mm:ss")  
  8. private LocalTime time;  

比如我们在springmvc中:

Java代码  收藏代码
  1. @RequestMapping("/test")  
  2. public String test(@ModelAttribute("entity") Entity entity) {  
  3.     return "test";  
  4. }  

当前端页面请求:

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中的如下方法来得到:

Java代码  收藏代码
  1. protected TimeZone determineDefaultTimeZone(HttpServletRequest request) {  
  2.     return getDefaultTimeZone();  
  3. }  

 

另外还提供了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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts