Spring 4 mvc,java 8における日付に対する処理方法

1697 ワード

スプリングmvcでは、日付の問題によく遭遇します.

@RestController
@RequestMapping("/api/datetime/")
final class DateTimeController {
 
    @RequestMapping(value = "date", method = RequestMethod.POST)
    public void processDate(@RequestParam("date") LocalDate date) {
      
    }
 
    @RequestMapping(value = "datetime", method = RequestMethod.POST)
    public void processDateTime(@RequestParam("datetime") LocalDateTime dateAndTime) {
        //Do stuff
    }
}

例えば/api/datetime/dateのような日付フォーマットを送信すると(2015-09-26)、エラーが発生します.
ConversionFailedExceptionの放出
java 8、spring mvc 4で@DateTimeFormatの注釈がサポートされている場合は簡単です
問題を解決する
 

 @RequestMapping(value = "date", method = RequestMethod.POST)
    public void processDate(@RequestParam("date") 
                            @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date) {

    }

時間タイプの場合、
 

@RequestMapping(value = "date", method = RequestMethod.POST)
    public void processDate(@RequestParam("date") 
                            @DateTimeFormat(pattern = "dd.MM.yyyy") LocalDate date) {

    }

または

 @RequestMapping(value = "datetime", method = RequestMethod.POST)
    public void processDateTime(@RequestParam("datetime") 
                                @DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss.SSSZ") LocalDateTime dateAndTime) {
        
    }