【发布时间】:2021-11-11 10:50:51
【问题描述】:
我已将 JAX-RS 与 Spring Boot 应用程序集成。
我想使用 LocalDate 作为查询参数。
端点示例如下:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("book/publication/year")
override fun findInRange(
@QueryParam("from") fromDate: LocalDate?,
@QueryParam("to") toDate: LocalDate?
): Response
如果我使用 String 一切正常,那么 LocalDate 类型本身的问题。
我找到了一篇来自 Sebastian Daschner 的文章:https://blog.sebastian-daschner.com/entries/jaxrs-convert-params
我现在有这些课程:
LocalDateConverter.kt:
class LocalDateConverter : ParamConverter<LocalDate?> {
override fun fromString(value: String?): LocalDate? {
return if (value == null) null else LocalDate.parse(value)
}
override fun toString(value: LocalDate?): String? {
return value?.toString()
}
}
LocalDateParamConverterProvider.kt:
@Provider
public class LocalDateParamConverterProvider : ParamConverterProvider {
override fun <T> getConverter(
rawType: Class<T>,
genericType: Type,
annotations: Array<Annotation>
): ParamConverter<T>? {
return if (rawType == LocalDate::class.java) LocalDateConverter() as ParamConverter<T> else null
}
}
什么都没有改变。问题是如何让 Spring Boot 在 Spring Boot 中运行时拾取自定义的 ParameterConverterProvider?
【问题讨论】:
-
也许您只需要使用@JsonFormat 对其进行注释?看看这里:baeldung.com/jackson-jsonformat
标签: spring-boot kotlin jax-rs