2013-10-02 4 views
5

Mam proste wiosna Kontroler:Set default/globalny format daty w Spring MVC ISO 8601

@RequestMapping(value="", method=RequestMethod.GET) 
public void search(MyDTO dto) { 
    // ... 
} 

I MyDTO:

public class MyDTO { 
    private DateTime date; 
    public DateTime getDate() { return date; } 
    public void setDate(DateTime date) { this.date = date; } 
} 

I rzeczywiście można wywołać metody kontrolera z mojego lokalnego daty format: 03.10.2013 01:00, np GET http://localhost:8080/test?date=03.10.2013 01:00

Ale chcę aplikacja szeroki format daty ISO 8601, np: 2007-03-01T13:00:00Z

Jeśli używam formatu ISO pojawia się następujący błąd:

Failed to convert property value of type 'java.lang.String' to required type 
'org.joda.time.DateTime' for property 'date'; nested exception is 
org.springframework.core.convert.ConversionFailedException: Failed to convert 
from type java.lang.String to type org.joda.time.DateTime for value 
'2013-09-25T23:05:18.000+02:00'; nested exception is 
java.lang.IllegalArgumentException: Invalid format: 
"2013-09-25T23:05:18.000+02:00" is malformed at "13-09-25T23:05:18.000+02:00" 

Musi być jakiś sposób, aby zmienić go na java.util.Date a także wszystkie te kontenery Data i Czas.

Właśnie znalazłem metodę addFormatters(FormatterRegistry registry) w obrębie WebMvcConfigurationSupport, ale tak naprawdę nie wiem jak jej użyć.

Odpowiedz

0

mam to praca dla Joda Time:

public class WebConfig extends WebMvcConfigurationSupport { 
    @Override 
    public void addFormatters(FormatterRegistry registry) { 
     JodaTimeFormatterRegistrar j = new JodaTimeFormatterRegistrar(); 
     j.setUseIsoFormat(true); 
     j.registerFormatters(registry); 
    }  
} 

Mam nadzieję, że jest łatwiejszy sposób, aby to zrobić dla wszystkich możliwych implementacji data.

Oryginalnie zaksięgowanych jako edycja na pytanie przez OP, Benjamin M