Отправка запросов с параметрами типа LocalDate - PullRequest
0 голосов
/ 31 мая 2018

Я хотел отправить запрос следующим образом: http://localhost:8080/reports/daily?start_date=2018-03-22&end_date=2018-03-24 и у меня есть ошибка:

"2018-05-31 15: 40: 29.623 WARN 11496 --- [nio-8080-exec-5] .wsmsDefaultHandlerExceptionResolver: не удалось связать элемент запроса: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: не удалось преобразовать значение типа «java.lang.String» в требуемый тип «java.time.Les»исключение: org.springframework.core.convert.ConversionFailedException: не удалось преобразовать тип [java.lang.String] в тип [@ org.springframework.web.bind.annotation.RequestParam @ org.springframework.format.annotation.DavaTimeFormat..time.LocalDate] для значения '2018-03-22'; вложенное исключение - java.lang.IllegalArgumentException: попытка синтаксического анализа не выполнена для значения [2018-03-22] "

Проблема очевидна, поэтому я нашелрешение и я все изменили, и мой метод выглядит так:

    @RequestMapping(path = "reports/daily", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE)
public String getDailyReport(@RequestParam ("start_date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate, @RequestParam("end_date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate endDate) {
    double totalDistance = 0.0;
    double totalPrice = 0.0;
    List<Transit> transits = transitService.getTransits(startDate, endDate);
    for (Transit transit : transits) {
        if (transit.getDistance() != null && transit.getPrice() != null) {
            try {
                totalDistance = totalDistance + transit.getDistance();
                totalPrice = totalPrice + transit.getPrice();
            } catch (NullPointerException e) {
                e.fillInStackTrace().getMessage();
            }
        }
    }


    return "Total distance " + totalDistance + ", total price: " + totalPrice;

}

Для меня все выглядит хорошо, я также добавил необходимые зависимости в файл pom.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 31 мая 2018

Я подозреваю, что проблема здесь:

    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)

Согласно документы DATE_TIME предназначены для даты и времени:

Наиболее распространенныеФормат даты и времени ISO yyyy-MM-dd'T'HH:mm:ss.SSSZ, например "2000-10-31T01: 30: 00.000-05: 00".

Ваш параметр 2018-03-22 выглядит не так.Вместо этого используйте

    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)

Наиболее распространенный формат даты ISO yyyy-MM-dd, например "2000-10-31".

То же самое для start_date и end_date.

...