2016-03-31 14 views
1

Ich bin ein wenig Spring MVC (4.2.4.RELEASE) App und ich habe ein paar Probleme mit Datumsfeldern gestoßen.Füllen Datum Feld im Frühjahr MVC Formular

Ich kann jetzt Objekte mit Daten erstellen und ich kann das Datum in Text/'open' HTML anzeigen. Ich kann jedoch nicht scheinen, ein Eingabefeld vom Typ = Datum zu füllen. Kann mir jemand helfen ?

Also mein pojo hat 2 Datumsfelder

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

Ich habe eine InitBinder an den Controller-Klasse hinzugefügt

@InitBinder 
protected void initBinder(WebDataBinder binder) { 

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

} 

ich das Bestehen der pojo als requestAttribute zur Ansicht und ich don Sehen Sie hier kein Problem, da andere Felder angezeigt werden.

Im jsp

<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> 

Die Felder nicht ausgefüllt werden. Ich bin sicher, dass dies ein Formatproblem ist, als ob ich sie in Standard-String-Eingabefelder umwandeln würde, indem typ = "date" entfernt wird. Die Textfelder werden mit den Daten gefüllt (obwohl nicht in dem Format, das ich irgendwo angegeben habe !?).

z.B. Di Mär 01 00:00:00 GMT 2016

Muss ich das Format irgendwo anders "forcieren"?

Antwort

-1

Ich habe die Antwort gefunden, Entschuldigungen für meine eigene Frage zu beantworten & auch nicht den entscheidenden Code in der Frage zu stellen ... Ich dachte, es als eine schnelle Gotcha nützlich sein kann für andere ...

Das Problem ist, dass Spring nur die Annotation @DateTimeFormat verwendet, wenn die Modellschnittstelle verwendet wird. Ich wurde gebeten zu versuchen, dies zu vermeiden (keinen guten Grund, dass ich sehen könnte) und so mit Alternativen gespielt, sich auf HttpServletRequest. Frühling hat abholen nicht das Datumsformat

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

Wenn der Controller die Model-Schnittstelle verwendet

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

Das Datumsformat hat gut funktioniert.