2013-10-02 2 views
5

Ho un semplice controller Primavera:Set default/formato della data globale in Spring MVC a ISO 8601

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

E MyDTO:

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

Io in realtà possibile chiamare il metodo di controllo con la mia data locale formato: 03.10.2013 01:00, ad es GET http://localhost:8080/test?date=03.10.2013 01:00

Ma voglio applicazione larga formato data ISO 8601, ad esempio: 2007-03-01T13:00:00Z

Se uso formato ISO ottengo il seguente errore:

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" 

Ci deve essere un modo per cambiarlo per java.util.Date e anche tutti quei contenitori di data e ora di Joda.

Ho appena trovato il metodo addFormatters(FormatterRegistry registry) all'interno di WebMvcConfigurationSupport, ma non so davvero come usarlo.

risposta

0

ho preso a lavorare per Joda Time:

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

Spero che ci sia un modo più semplice per ottenere questo fatto per tutte le possibili implementazioni Data.

Messaggio inserito da una modifica alla domanda dal PO, Benjamin M