[英]Can't use LocalDateTime RequestParam in Spring, I keep getting bad request
我有一个带有以下签名的 Spring 控制器:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
我尝试通过 Postman 使用以下 GET 调用它:
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12
我收到 400 错误请求。 我知道问题与 startTime 参数有关,但我不明白如何更改它......我在这里检查过,它似乎是正确的......
提前致谢
在您的要求中
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12
您正在以YYYY-MM-dd
的形式发送查询参数startTime
和endTime
,但在控制器端,您试图解析为 LocalDateTime 对象,但它应该被解析为 LocalDate 对象,因为您是以这种形式发送的。 LocalDateTime 对象的格式YYYY-MM-ddTHH:mm:ss.
所以改变这个:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
对此:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
或这个 :
@GetMapping(path = "/getInfo", produces = {MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE})
public void get(
@RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime,
@RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime
) {
//METHOD BODY
System.out.println(startTime);
System.out.println(endTime);
}
如果您真的想将查询参数解析为 localDateTime 对象:
http://localhost:8081/getInfo?startTime=2022-07-12T14:13:12&endTime=2022-07-12T14:13:12
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.