我想发送这样的请求: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.LocalDate';嵌套异常是org.springframework.core.convert.ConversionFailedException:无法从类型[java.lang.String]转换为类型[@ org.springframework.web.bind.annotation.RequestParam @ org.springframework.format.annotation.DateTimeFormat java.time.LocalDate] for value'2018-03-22';嵌套异常是java.lang.IllegalArgumentException:解析尝试失败 Value [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 回答
我怀疑问题在这里:
根据the docs
DATE_TIME
用于日期和时间:您的参数
2018-03-22
看起来不是这样的 . 而是使用start_date
和end_date
也是如此 .