SpringMVC 自动绑定数据 - DATE多个类型格式 的数据绑定

文章原链接:http://blog.csdn.net/dailuwen/article/details/60322864

总共方法有三种:

第一种:繁重操作解决方式:

在 Controller 里面不写 InitBinder 方法; 直接在请求实体类里面将DATE 类型的字段 注解 @DateTimeFormat("格式")


第二种:比较繁重操作解决方式:

在 Controller 里面写 InitBinder 方法; 里面写多个日期格式;将特殊的标出;如下代码:

  1. @InitBinder  
  2.     public void initBinder(WebDataBinder b) {  
  3.         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
  4.         b.registerCustomEditor(Date.classnew CustomDateEditor(df, true));  
  5.           
  6.         DateFormat df2 = new SimpleDateFormat("yyyy-MM");  
  7.         String[] fileds = {"字段名""字段名""字段名"};  
  8.         for(String filed : fileds){  
  9.             b.registerCustomEditor(Date.class, filed, new CustomDateEditor(df2, true));  
  10.         }  
  11.     }  

第三种:轻松解决方式:

自己写一个DATE数据绑定类;然后在Controller 里面写 InitBinder 方法里面应用;如下代码

  1. package com.luwen.dai.util;  
  2.   
  3. import java.beans.PropertyEditorSupport;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7.   
  8. import org.apache.commons.lang.StringUtils;  
  9. import org.slf4j.Logger;  
  10. import org.slf4j.LoggerFactory;  
  11.   
  12. public class SpecialDateEditor extends PropertyEditorSupport {  
  13.       
  14.     private final Logger logger = LoggerFactory.getLogger(getClass());  
  15.   
  16.     @Override  
  17.     public void setAsText(String text) throws IllegalArgumentException {  
  18.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  19.         Date date = null;  
  20.         try {  
  21.             //防止空数据出错  
  22.             if(StringUtils.isNotBlank(text)){  
  23.                 date = format.parse(text);  
  24.             }  
  25.         } catch (ParseException e) {  
  26.             format = new SimpleDateFormat("yyyy-MM-dd");  
  27.             try {  
  28.                 date = format.parse(text);  
  29.             } catch (ParseException e1) {  
  30.                 format = new SimpleDateFormat("yyyy-MM");  
  31.                   
  32.                 try{  
  33.                     date = format.parse(text);  
  34.                 }catch (Exception e2) {  
  35.                     logger.error("自动绑定日期数据出错", e);  
  36.                 }  
  37.             }  
  38.         }  
  39.         setValue(date);  
  40.     }  
  41.       
  42. }  

然后在initBinder 方法里直接引用

  1. @InitBinder  
  2.     public void initBinder(WebDataBinder b) {  
  3.         b.registerCustomEditor(Date.classnew SpecialDateEditor());  
  4.     }  

 以上为 三种 SpringMVC 多个 日期格式 数据类型自动绑定解决方法;

猜你喜欢

转载自blog.csdn.net/li383200888/article/details/77016686