Java LocalDateTime在向JAX-RS控制器发出的PUT请求中被设置为Null
我试图在方法的请求参数中传递LocalDateTime,但它总是记录为null。请帮我找出我做错了什么:Java LocalDateTime在向JAX-RS控制器发出的PUT请求中被设置为Null,java,spring-boot,jax-rs,java-time,Java,Spring Boot,Jax Rs,Java Time,我试图在方法的请求参数中传递LocalDateTime,但它总是记录为null。请帮我找出我做错了什么: @Path("/book/workOrderId/{workOrderId}") @PUT public Response bookWorkOrder(@Context HttpHeaders headers, @PathParam("countryCode") String countryCode, @PathPara
@Path("/book/workOrderId/{workOrderId}")
@PUT
public Response bookWorkOrder(@Context HttpHeaders headers, @PathParam("countryCode") String countryCode,
@PathParam("workOrderId") int workOrderId,
@QueryParam("reasonId") int reasonId,
@RequestParam(value = "dateTime") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") LocalDateTime dateTime
) throws CDException {
logger.debug("dateTime outside if::" + dateTime);
return Response.ok(true).build();
}
输出:
22:32:27.659 [http-nio-8300-exec-2] DEBUG c.c.t.i.e.v.impl.WorkorderController - dateTime outside if::null
这对我很有用:
@PUT
public Response bookWorkOrder(@Context HttpHeaders headers, @PathParam("countryCode") String countryCode,
@PathParam("workOrderId") int workOrderId, @QueryParam("bookingTime") String bookingTime,
@QueryParam("reasonId") int reasonId) throws CDException {
LocalDateTime localDateTime = LocalDateTime.parse(bookingTime, DateTimeFormatter.ISO_DATE_TIME);
logger.debug("bookingTime:: {}", bookingTime);
return Response.ok(true).build();
}
您使用的是JAX-RS而不是Spring MVC,因此
@RequestParam
和@DateTimeFormat
都可以像Spring MVC而不是JAX-RS那样工作。那么我们如何在这里传递localDateTime呢@M.DeinumDepends你是如何提交的?如果它是参数,那么它是ULR(@PathParam
)的一部分吗?使用@QueryParam
,如果它是表单的一部分,那么使用@FormParam
。因此,这取决于您提交数据的方式。我想将其作为@QueryParam
传递,但如何在其中传递本地日期时间表达式。端点中的dateTime=2020-10-08T14:00:00使用@QueryParam(“bookingTime”)LocalDateTime bookingTime时无效。DeinumNo idea。不确定JAX-RS是如何支持javax.time
东西的(因此更改了标题并添加了标记,以便可能知道的人能够回答)。