簡體   English   中英

為Spring 4 @RequestParam或@PathVariable注冊自定義轉換器的正確方法是什么

[英]What is the correct way to register a custom converter for Spring 4 @RequestParam or @PathVariable

我試圖弄清楚在Spring 4中客戶轉換器對RequestParams和PathVariables的“最佳”或推薦方式是什么? 我們已經注冊了Jackson JSON轉換器,但是它們不適用於這些參數,通過在線閱讀,我發現了關於應該做什么的大約十二種不同答案。

我原本以為LocalDateTime可以在沒有標准ISO格式yyyy-MM-ddThh:mm:ss的自定義轉換器的情況下工作,但是當我將其傳遞給(2014-12-01T01:01:01)時,它只是引發了異常,因此我嘗試了不同的格式以查看它們是否可行,但是到目前為止,我嘗試過的所有格式都沒有奏效,所以我打算嘗試使用自定義轉換器,但是我似乎找不到正確的方法。

@RequestMapping(value = "/foo")
@RestController
public class TestController{
    @RequestMapping(value="/test", method=RequestMethod.GET)
    public void test(@RequestParam("stuff") LocalDateTime source) {
        int i = 0;
    }
}

這是我嘗試的示例URL http://localhost:8081/data/foo/test?start=1986-04-08T12:30:00

適合您的情況的格式為

@RequestMapping(value="/test", method= RequestMethod.GET)
public void test(@RequestParam("stuff")  @DateTimeFormat(iso=ISO.DATE_TIME) LocalDateTime source) {
    int i = 0;
}

只需確保一件事,在您傳遞的值中並在問題中2014-12-01T:01:01:01您有錯字,應該是2014-12-01T01:01:01所以不要使用分號T01

嘗試查看由Spring 3類型轉換和驗證引入的@DateTimeFormat參數注釋:

@RequestMapping(value = "/appointments/{day}", method = RequestMethod.GET)
public String getAppointmentsForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day) {
    ...
}

暫無
暫無

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

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