2013-08-10 9 views
17

Ich habe Hibernate Einheit und eine Bohne:Frühjahr mvc Datumsformat mit Form: Eingang

@Entity 
public class GeneralObservation { 
    @DateTimeFormat(pattern = "dd/MM/yyyy") 
    Date date; 

    @Column 
    public Date getDate() { 
     return date; 
    } 

    public void setDate(Date date) { 
     this.date = date; 
    } 
} 

auch habe ich

@InitBinder 
protected void initBinder(WebDataBinder binder) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
    binder.registerCustomEditor(Date.class, new CustomDateEditor(
      dateFormat, false)); 
} 

und

 form:input 
       id = "datepicker" 
       name="date" 
       itemLabel="date" 
       path="newObservation.date" 

Als ich meine url gehen Ich sehe:

my form

Wie kann ich es zwingen, mm/DD/yyyy Format zu haben? Thanx

+0

'@DateTimeFormat (pattern =„dd/MM/JJJJ ")' und 'neues SimpleDateFormat (" TT/MM/JJJJ ")' beide verwenden 'TT/MM/JJJJ'. Haben Sie versucht, sie in 'MM/TT/JJJJ' zu ändern? –

+2

siehe http: //stackoverflow.com/questions/3457134/how-to-display-a-formatted-datetime-in-spring-mvc-3-0 – Algorithmist

+0

Nein, das würde nicht helfen, denn form: input lässt sich nicht setzen Standardwert explizit –

Antwort

6

Die Lösung ist
<mvc:annotation-driven/> zu setzen mvc-dispatcher-servlet.xml und auch xmlns: mvc = "http://www.springframework.org/schema/mvc" am Anfang der XML-Datei.

22

können Sie fmt verwenden: format jstl tag:

<fmt:formatDate value="${yourObject.date}" var="dateString" pattern="dd/MM/yyyy" /> 
<form:input path="date" value="${dateString} .. /> 
+7

Formular: Eingabe hat keinen Wert Eigenschaft ... –

+1

Ja, Entschuldigung für falsche Darstellung. In meiner Anwendung habe ich die gleiche Situation, aber Datumsformat ist korrekt (wie ich in DateTimeFormat Annotation vor Feld angeben). Und nicht nur die Darstellung des Feldes ist korrekt: Ich habe keine @InitBinder Methode und alle Arbeiten korrekt. Vielleicht habe ich eine neuere Version der Spring-Bibliothek (3.1.1.RELEASE)? – yname

4

in meinem Code verwende ich das Bindemittel auf diese Weise:

@InitBinder 
public void initBinder(WebDataBinder binder) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
    dateFormat.setLenient(false); 
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); 
} 
+0

Das hilft mir nicht, wenn Sie meine Post sorgfältig lesen. –

+0

Versuchen: $ (document) .ready (function() { \t $ (function() { \t \t $ ("# picker") picker ({ \t \t \t changeMonth. Wahr, \t \t \t changeYear : true, \t \t \t Datumsformat: 'dd/MM/yyyy \t \t}); \t});

+0

ich nicht nee d Datumsauswahl. Das Datumsformat ist nicht das, was ich erwartet habe. –

0

In HTML5 gibt es input type = "date", die gleiche Sache im Frühling (Chrome, Opera, und ich dies auch Safary, aber noch nicht in Firefox

<form:input type="date" ... >