如何为Spring @RequestParam将Javascript日期转换为LocalDate?

问题描述 投票:0回答:1

我有一个像这样的方法的@RestController

@GetMapping("/getInvoices")
public List<InvoiceDto> getInvoices(@RequestParam(name="date") @DateTimeFormat LocalDate date) {
 // do stuff and return a list of InvoiceDtos
}

但是当JavaScript客户端发送http://localhost:8080/getInvoices?date=Thu+Nov+30+2017+00%3A00%3A00+GMT-0600+(Central+Standard+Time)等请求时

服务器报告:

2017-12-20 16:20:03.123 WARN 10324 --- [nio-9003-exec-7] .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]的价值'星期四2017年11月30日23:20:02 GMT-0600(中央标准时间)';嵌套异常是java.lang.IllegalArgumentException:解析尝试失败的值[Thu Nov 30 2017 23:20:02 GMT-0600(Central Standard Time)]

如何将日期的String表示(忽略时间组件)转换为LocalDate?

javascript java spring spring-mvc
1个回答
0
投票

尝试使用pattern属性:

@DateTimeFormat(pattern="E MMM dd yyyy HH:mm:ss 'GMT'Z")
© www.soinside.com 2019 - 2024. All rights reserved.