2016-03-31 14 views
1

Küçük bir Spring MVC (4.2.4.RELEASE) uygulaması yapıyorum ve tarih alanları ile ilgili bir kaç sorunla karşılaşıyorum.Spring MVC Formunda birleştirme tarihi alanı

Artık tarihler içeren nesneler oluşturabilirim ve tarihi metin/açık 'html olarak görüntüleyebilirim. Ancak, input = type türünde bir girdi kutusu yerleştiremiyorum. Biri bana yardım edebilir mi ?

Yani benim pojo sahiptir 2 tarih alanları

@DateTimeFormat(pattern = "yyyy-MM-dd") 
private Date startDate; 
@DateTimeFormat(pattern = "yyyy-MM-dd") 
private Date endDate; 

Ben denetleyici sınıfının

@InitBinder 
protected void initBinder(WebDataBinder binder) { 

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    dateFormat.setLenient(true); 
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat,false)); 

} 

Ben görünümü ve I don bir requestAttribute olarak pojo geçiyorum bir InitBinder ekledik Diğer alanların görüntülendiği gibi burada herhangi bir sorun görmüyorum. alanları doldurulmaz

<table> 
    <tr> 
     <td>Start Date</td> 
     <td><form:input type="date" path="startDate" id="startDate" /></td> 
    </tr> 
    <tr> 
     <td>End Date</td> 
     <td><form:input type="date" path="endDate" id="endDate" /></td> 
    </tr> 
</table> 

jsp olarak

. Eminim bu, standart dize giriş kutularına tip = "tarih" 'i kaldırarak metin kutularına tarihlerle doldurulmuş (eğer herhangi bir yerde belirttiğim formatta olmasa da!) Gibi bir biçim sorunu olduğundan eminim.

örn. Sal Mar 01 00:00:00 GMT 2016

Biçimi başka bir yerde 'zorlamak' zorunda mıyım?

cevap

-1

ben ... cevap, söz konusu yaşamsal kod koyarak için de kendi soruya & cevaplanması için özür ... Ben başkalarına hızlı bir Yakaladım olarak faydalı olabilir düşündüm buldum

Sorun, Spring'in Model Arabirimini kullanırken sadece @DateTimeFormat notunu kullanması gibi görünüyor. Bunu denemem ve denemem gerekiyordu (görebildiğim için iyi bir sebep yok) ve HttpServletRequest'e yerleşerek alternatiflerle oynadım. Kontrolör Modeli arayüzünü

@RequestMapping(value = "/person/edit/{id}", method=RequestMethod.GET) 
    public String getPersonForEdit(@PathVariable("id") long id 
      , **Model model**) throws IOException 
    { 
     ... 
     **model.addAttribute**("person", person); 
     return "editPerson"; 
    } 

tarih biçimi iyi çalıştı kullanıldığında Bahar tarih biçimini

@RequestMapping(value = "/person/edit/{id}", method=RequestMethod.GET) 
    public String getPersonForEdit(@PathVariable("id") long id 
      , HttpServletRequest request) throws IOException 
    { 
     ...  
     **request.setAttribute**("person", person); 
     return "editPerson"; 
    } 

açmadı.