簡體   English   中英

綁定日期參數時彈簧mvc錯誤

[英]Spring mvc error while binding date param

我對Spring MVC有一個奇怪的問題。 我有一個Controller方法,它接受2個日期參數作為請求參數startDateendDate 如果我使用一個簡單的URL與2個參數如下:

http://localhost/myapp/videos?startDate=2013-05-10&endDate=2013-06-01.json

我收到此錯誤消息:

[#|2013-05-27T17:39:01.711+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|38386 [http-thread-pool-8080(5)] DEBUG org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver  - Resolving exception from handler [public java.util.List<Video> com.ufasoli.Videos.programs(com.ufasoli.filtering.SearchParams)]: org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'searchParams' on field 'endDate': rejected value [2013-06-01.json]; codes [typeMismatch.searchParams.endDate,typeMismatch.endDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [searchParams.endDate,endDate]; arguments []; default message [endDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'endDate'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat java.util.Date for value '2013-06-01.json'; nested exception is java.lang.IllegalArgumentException: Invalid format: "2013-06-01.json" is malformed at ".json"]
|#]

但是一旦我刪除.json就像這樣:

http://localhost/myapp/videos?startDate=2013-05-10&endDate=2013-06-01

一切正常......

這看起來像是一個錯誤,因為數據綁定器在將數據綁定到控制器時不應該考慮url擴展,還是這種正常行為?

以下是導致問題的控制器方法:

 @RequestMapping(value = "/videos/", 
                 method = RequestMethod.GET, 
                 produces = MediaType.APPLICATION_JSON_VALUE)
    public List<Videos> videos( SearchParams searchParams) {

        return videosRepository.videos(searchParams);
    }

這是我的SearchParams類:

public class SearchParams extends BaseSearchParams implements Serializable{


    private static final long serialVersionUID = 1L;
    @DateTimeFormat(iso = ISO.DATE, pattern = "yyyy-MM-dd")
    private Date startDate;
    @DateTimeFormat(iso = ISO.DATE, pattern = "yyyy-MM-dd")
    private Date endDate;

     //Setters/Getters
}

我正在使用Spring MVC 3.2.1.RELEASE

任何見解?

提前致謝

我認為'url擴展'(如果有的話)應該是路徑的一部分,因此在查詢之前屬於: http://localhost/myapp/videos.json?startDate=2013-05-10&endDate=2013-06-01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM