Spring @DateTimeFormat, похоже, не проверяет даты ISO - PullRequest
0 голосов
/ 07 июня 2018

Я столкнулся со странным поведением, не уверен, что это ошибка или особенность.Вот мой код контроллера:

@RequestMapping(path = "/delayedtemplates", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.ACCEPTED)
public void delayedFileUpload(@RequestParam("file") MultipartFile file,
                              @RequestParam(name = "siteduedate")
                                      @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
                                      Date dueDate
) {
...
}

Проблема в том, что, если я введу параметр siteduedate как 20018-08-09, он все равно будет проанализирован как действительная дата ISO8601.Более того, он выдвинут в Postgres как действительная дата!Есть ли способ предотвратить такое поведение?Spring boot version 1.5.2.RELEASE

1 Ответ

0 голосов
/ 07 июня 2018

Для меня следующая комбинация работает либо для сериализации / десериализации с использованием Spring MVC.

DTO:

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd") 
@JsonFormat(pattern = "yyyy-MM-dd") 
private final LocalDate myDate;

Я предлагаю использовать классы даты / времени Java 8.

...