2013-10-02 108 views
5

我有一個簡單的Spring控制器:設置默認/全球日期格式在Spring MVC到ISO 8601

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

而且MyDTO

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

我居然可以調用控制器方法與本地日期格式:03.10.2013 01:00,例如GET http://localhost:8080/test?date=03.10.2013 01:00

但我想申請寬廣的ISO 8601日期格式,如:2007-03-01T13:00:00Z

如果我使用ISO格式,我收到以下錯誤:

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" 

一定有辦法改變它java.util.Date以及所有Joda Date和Time容器。

我剛剛在WebMvcConfigurationSupport內發現了addFormatters(FormatterRegistry registry)方法,但我真的不知道如何使用它。

回答

0

我得到它的工作爲喬達時間:

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

我希望有獲得這個對所有可能的日期實現做了一個更簡單的方法。

最初發布編輯由OP的問題,Benjamin M