SpringBoot数据异常处理

时间:2018-10-28 22:04:25

标签: java spring date spring-boot

我有一个spring boot post控制器,该控制器的日期带有特定格式的参数,问题是,如果用户以其他格式提交表单,应用程序将崩溃,我不确定如何处理有了这个:( 控制器:

@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]

但是如果日期是例如:2018年10月15日,它将起作用...什么是处理此问题的最佳方法?

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作之一:

  • 您可以将日期作为字符串接收,将其转换为服务中的内容,并将所需的错误信息返回给客户端
  • 实施异常处理程序建议,并将所需的答案/错误返回给客户端
  • 将数据作为json接收,并在json上编写自己的格式化程序(字符串为date),然后,如果格式错误,则可以引发自己的异常