Не удалось преобразовать значение типа java.lang.String в требуемый тип java.util.Date.

2
<form th:action="@{home}" method="get">
    <div class="form-group">
        <label>from date:</label> <input type="date" pattern="yyyy-MM-dd" name="d1" th:value="${d1}" />
        <label>to date:</label> <input type="date" pattern="yyyy-MM-dd"  name="d2" th:value="${d2}" />
        <button type="submit">Trouver</button>
    </div>
</form>

это часть кода контроллера:

@RequestParam(name = "d1", defaultValue = "1900-01-01") @DateTimeFormat(pattern = "yyyy-MM-dd") Date d1,
        @RequestParam(name = "d2", defaultValue = "2200-01-01") @DateTimeFormat(pattern = "yyyy-MM-dd") Date d2){

Я получаю это сообщение:

Произошла непредвиденная ошибка (type = Bad Request, status = 400). Не удалось преобразовать значение типа [java.lang.String] в требуемый тип [java.util.Date]; Вложенное исключение - org.springframework.core.convert.ConversionFailedException: Не удалось преобразовать из типа [java.lang.String] в тип [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.util.Date] для значения 'Wed Jun 08 00:00:00 WET 2016'; вложенное исключение - java.lang.IllegalArgumentException: попытка анализа не удалось для значения [Wed Jun 08 00:00:00 WET 2016]

Теги:
spring
spring-mvc
hibernate

1 ответ

1

Шаблон, который вы передаете своим элементам ввода html, не работает, как вы ожидаете. Вы не устанавливаете формат для своей даты с этим, и, как вы можете видеть из сообщения об ошибке, дата, когда весна пытается разобрать,

Wed Jun 08 00:00:00 WET 2016

не какая-либо дата в формате, который вы установили как в своем html, так и в вашем контроллере (шаблон html не изменяет формат, который отправляется, он там для целей проверки).

Я никогда с этим не работал, но вы должны либо

  • просто удалите полный шаблон и формат и посмотрите, работает ли это (я думаю, это возможно)
  • установите правильный формат даты в шаблоне контроллера в соответствии с форматом даты, который я опубликовал выше (и ваше сообщение об ошибке).

Вот:

@DateTimeFormat(pattern = "yyyy-MM-dd")
  • 1
    Шаблон не его проблема. Если вы прочитаете сообщение об ошибке, в нем говорится, что он не может преобразовать тип java.lang.String в java.util.Date. Вместо этого для этого потребуется проанализировать дату с помощью SimpleDateFormat или чего-то подобного.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню