2015-02-12 129 views
1

我在类中创建了一个时间戳成员并将其存储在数据库中。当我尝试更新其值时,它变为空,但能够在UI中看到它的值。Spring MVC日期绑定返回空值

我使用init绑定器来转换字符串到日期,但它不工作,请帮助我。

CNTC.java

import java.util.Date; 
    import java.util.HashSet; 
    import java.util.Set; 

    import javax.persistence.Column; 
    import javax.persistence.Entity; 
    import javax.persistence.FetchType; 
    import javax.persistence.GeneratedValue; 

    import static javax.persistence.GenerationType.IDENTITY; 

    import javax.persistence.Id; 
    import javax.persistence.OneToMany; 
    import javax.persistence.Table; 
    import javax.persistence.Temporal; 
    import javax.persistence.TemporalType; 

    import org.springframework.format.annotation.DateTimeFormat; 

    /** 
    * Cntc generated by hbm2java 
    */ 
    @Entity 
    @Table(name = "cntc", catalog = "ecable") 
    public class Cntc implements java.io.Serializable { 

     private Integer cntcId; 
     private String mobNo; 
     private String altMobNo; 
     private String emailId; 
     private String crtId; 
     private Date crtTs; 
     private String updId; 
     @DateTimeFormat(pattern="yyyy-mm-dd HH:mm:ss.z") 
     private Date updTs; 
     private Set<Addr> addrs = new HashSet<Addr>(0); 



     @Id 
     @GeneratedValue(strategy = IDENTITY) 
     @Column(name = "CNTC_ID", unique = true, nullable = false) 
     public Integer getCntcId() { 
      return this.cntcId; 
     } 

     public void setCntcId(Integer cntcId) { 
      this.cntcId = cntcId; 
     } 

     @Column(name = "MOB_NO", nullable = false, length = 500) 
     public String getMobNo() { 
      return this.mobNo; 
     } 

     public void setMobNo(String mobNo) { 
      this.mobNo = mobNo; 
     } 

     @Column(name = "ALT_MOB_NO", nullable = false, length = 500) 
     public String getAltMobNo() { 
      return this.altMobNo; 
     } 

     public void setAltMobNo(String altMobNo) { 
      this.altMobNo = altMobNo; 
     } 

     @Column(name = "EMAIL_ID", nullable = false, length = 1000) 
     public String getEmailId() { 
      return this.emailId; 
     } 

     public void setEmailId(String emailId) { 
      this.emailId = emailId; 
     } 

     @Column(name = "CRT_ID", nullable = false, length = 200) 
     public String getCrtId() { 
      return this.crtId; 
     } 

     public void setCrtId(String crtId) { 
      this.crtId = crtId; 
     } 

     @Temporal(TemporalType.TIMESTAMP) 
     @Column(name = "CRT_TS", nullable = false, length = 0) 
     public Date getCrtTs() { 
      return this.crtTs; 
     } 

     public void setCrtTs(Date crtTs) { 
      this.crtTs = crtTs; 
     } 

     @Column(name = "UPD_ID", length = 200) 
     public String getUpdId() { 
      return this.updId; 
     } 

     public void setUpdId(String updId) { 
      this.updId = updId; 
     } 

     @Temporal(TemporalType.TIMESTAMP) 
     @Column(name = "UPD_TS", length = 0) 
     public Date getUpdTs() { 
      return this.updTs; 
     } 

     public void setUpdTs(Date updTs) { 
      this.updTs = updTs; 
     } 

    } 

控制器绑定显示在UI

2015-02-11 08:35:18.0 

@InitBinder 
    public final void initBinder(WebDataBinder binder) { 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); 
     dateFormat.setLenient(false); 
     binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); 
    } 

日期s是日期格式,我可以在用户界面中看到,但是当我试图更新其值在spring数据绑定对象中变为null时,请提前帮助我。

回答

1

您使用的格式是错误的,当你宣布,你应该使用一个month pattern资本M,所以它应该是

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 

@DateTimeFormat也将一个字符串转换为日期,所以你的initBinder是不需要的,你应该删除它。

注意模式必须符合要求的日期格式,张贴的模式,例如一个符合以下格式"2010-07-04 00:00:00",我提到这个因为你的粘合剂和@DateTimeFormat里面的图案是不同的,你应该设置一个对应你的请求参数格式的文件

+0

非常感谢 – 2015-05-04 07:50:58