2013-08-10 24 views
17

Mam hibernacji podmiot i Fasola:wiosna MVC format daty z formularza: wejście

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

też mam

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

i

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

Kiedy idę do mojego url Rozumiem:

my form

Jak mogę wymusić na nim format mm/DD/rrrr? Niż

+0

'@DateTimeFormat (wzór =„dd/MM/rrrr ")' i 'new SimpleDateFormat (" dd/MM/rrrr ")' oba używają 'dd/MM/rrrr'. Czy próbowałeś je zmienić na' mm/DD/rrrr'? –

+2

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

+0

Nie, to nie pomogłoby, ponieważ forma: input nie pozwala umieścić wartość domyślna jawnie: –

Odpowiedz

6

Rozwiązaniem jest umieszczenie
<mvc:annotation-driven/> do mvc-dispatcher-servlet.xml , a także xmlns: mvc = "http://www.springframework.org/schema/mvc" na początku pliku xml.

22

Można użyć FMT: formatDate tag JSTL:

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

formularz: dane wejściowe nie mają wartości właściwości ... –

+1

Tak, przepraszam za wprowadzenie w błąd. W mojej aplikacji mam taką samą sytuację, ale format daty jest poprawny (tak jak określam w adnotacji DateTimeFormat przed polem). I nie tylko prezentacja pola jest poprawna: nie mam metody @InitBinder i wszystkie prace są poprawne. Może mam nowszą wersję biblioteki wiosennej (3.1.1.RELEASE)? – yname

4

w moim kodu używam spoiwo w ten sposób:

@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

To mi nie pomoże, jeśli przeczytasz dokładnie mój wpis. –

+0

Spróbuj: $ (document) .ready (function() { \t $ (function() { \t \t $ ("# datepicker") datepicker ({ \t \t \t changeMonth. Prawdziwe, \t \t \t changeYear true, \t \t \t dATEFORMAT: 'dd/mm/rrrr' \t \t}); \t});

+0

nie do domu d datepicker. Format daty nie jest taki, jak się spodziewałem. –

0

w HTML5 jest wejście type = "data", samo w sprężyna (Chrome, Opera, a ja to Safary też, ale jeszcze nie w Firefoksie

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