2015-02-12 3 views
1

Я создал один элемент временной метки в классе и сохранил его в базе данных. Когда я пытаюсь обновить его значение, он становится нулевым, но может видеть его значение в пользовательском интерфейсе.Spring MVC date binding возвращает значение null

Я использовал связывание 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; 
     } 

    } 

Контроллер связывания

@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)); 
    } 

Дата отображается в пользовательском интерфейсе

2015-02-11 08:35:18.0 

Thi s - формат даты, который я могу видеть в пользовательском интерфейсе, но когда я пытаюсь обновить его значение, становится null в объекте привязки данных весны, пожалуйста, помогите мне, спасибо заранее.

ответ

1

, что вы используете формат является неправильным, когда вы возможность объявления month pattern вы должны использовать капитализируются M, поэтому он должен быть

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

@DateTimeFormat также преобразовать строку Дата, поэтому ваш initBinder не нужен, и вы должны удалить его.

Обратите внимание, что шаблон должен соответствовать формату даты, указанной в запросе, посланной шаблон подходит, например, следующий формат "2010-07-04 00:00:00", я упоминаю это потому ваше связующее и рисунок внутри @DateTimeFormat отличаются , вы должны установить тот, который соответствует вашему параметру параметров запроса.

+0

Большое спасибо –

Смежные вопросы