SpringBoot Обработка исключений данных - PullRequest
0 голосов
/ 29 октября 2018

У меня есть весенний загрузочный пост-контроллер, в котором в качестве параметра указан конкретный формат даты, проблема в том, что, если пользователь отправит форму в другом формате, приложение вылетит, и я не совсем уверен, как мне поступить с этим:( Контроллер:

@RequestMapping(value = "/findFlights", method = RequestMethod.POST)
    public String findFlights(@RequestParam("from") String from, @RequestParam("to") String to,
            @RequestParam("departureDate") @DateTimeFormat(pattern = "MM-dd-yyyy") Date departureDate, Model model) {

        List<Flight> flights = flightRepository.findFlights(from, to, departureDate);
        if(flights.isEmpty()) {
            model.addAttribute("msg", "No flights were found!");
        }else {
            model.addAttribute("flights", flights);
            foundFlights = true;
            model.addAttribute("foundFlights", foundFlights);
        }

        return "displayFlights";
    }

В основном, если представленная дата будет выглядеть примерно так: 22-22-2018, это даст мне следующее исключение:

Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.util.Date] for value '22-22-2018'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [22-22-2018]

Но если, например, дата: 10-15-2018, она сработает ... как лучше всего с этим справиться?

1 Ответ

0 голосов
/ 29 октября 2018

вы можете сделать одно из следующих действий:

  • Вы можете получить дату в виде строки, преобразовать ее в свой сервис и вернуть требуемую информацию об ошибке клиенту
  • внедрить рекомендации обработчика исключений и вернуть требуемый ответ / ошибку клиенту
  • получать данные как json, а на json написать свой собственный форматер (строка на дату), а затем, если формат неправильный, вы можете выбросить собственное исключение
...