У меня есть этот контроллер, который я пытаюсь проверить с помощью mockMVCDateTimeFormat ISO & Spring MVC
@RequestMapping(value = "/something/{language}", method = RequestMethod.GET, produces = { "application/json", "application/xml" })
public ResponseEntity<someEntity> getInfo(
@PathVariable String language,
@DateTimeFormat(iso= DateTimeFormat.ISO.DATE_TIME) @RequestParam(required = false) Date fromDate
)
Так что я ожидаю, чтобы форматы дат, как в Документах могли быть интерпретированы: DATE_TIME Наиболее распространенным ISO DateTime Формат yyyy-MM-dd'T'HH: mm: ss.SSSZ, например
Однако я продолжаю получать такие вещи, как это:
выполнение обработчика в результате исключения: Не удалось преобразовать значение типа «» java.lang.String для требуемого типа «java.util.Date»; вложенное исключение
org.springframework.core.convert.ConversionFailedException:
Failed to conv ert from type java.lang.String to type
@org.springframework.format.annotation.DateTimeFormat
@org.springframework.web.bind.annotation.RequestParam java.util.Date for value '2015-09-26T01:30:00.000Z'; nested exception is
java.lang.IllegalArgumentException: Unable to parse '2015-09-26T01:30:00.000Z'
Насколько я вижу, я не делаю ничего плохого, что должно быть, конечно. Может ли кто-нибудь просветить, что мое плохое? Я не думаю, что мне нужно опубликовать больше кода, поскольку исключение показывает правильное значение, которое я передаю API правильно?
Я верю, что проблема связана с последним символом 'Z', поскольку он представляет собой зону в синтаксическом анализе времени даты. – Sanjeev
Хорошо, что это нормально работает, и когда я сериализую в этом формате, также отлично работает. Сейчас я просто принимаю строку и преобразовываю ее в дату вручную. Возможно, это связано с тем фактом, что это запрос GET –
Ваша дата строка времени неверна в соответствии с ISO.DATE_TIME Формат должен быть «2015-09-26T01: 30: 00.000 <фактическое значение часового пояса>» вместо '2015-09-26T01: 30: 00.000Z' для ex. '2015-09-26T01: 30: 00.000-04: 00' – Sanjeev