@ProjectedPayload / ProjectingJackson2HttpMessageConverter 默认值
Default values with @ProjectedPayload / ProjectingJackson2HttpMessageConverter
我在接口上使用 @ProjectedPayload
将 JSON 请求主体绑定到我接口的代理实例。
我的界面如下(在 Kotlin 中,val
只是转换为 Java getter):
@ProjectedPayload
interface ImportServer {
val id: UUID?
val name: String?
}
现在,这里的 id
是完全可选的,但我无法指定它,至少据我所知是这样。如果我尝试访问 id
属性 但它不存在于请求正文中,我将收到来自 JsonPath 的异常:com.jayway.jsonpath.PathNotFoundException: No results for path: $['id']
。如果我可以配置 JsonPath,我可以使用 Option.DEFAULT_PATH_LEAF_TO_NULL
并且对于不存在的元素我会得到 null
。但是我无法获得 JsonPath 配置,它恰好被锁定在 JsonProjectingMethodInterceptorFactory
.
中
有没有办法让我在这里指定一个默认值?或者有没有办法让我检测 id
是否存在,而无需首先访问 id
属性?
这是一个错误,已通过 DATACMNS-1145 修复。将与 Ingalls SR7 一起发布,并与 Boot 1.5.7 一起发布。
我在接口上使用 @ProjectedPayload
将 JSON 请求主体绑定到我接口的代理实例。
我的界面如下(在 Kotlin 中,val
只是转换为 Java getter):
@ProjectedPayload
interface ImportServer {
val id: UUID?
val name: String?
}
现在,这里的 id
是完全可选的,但我无法指定它,至少据我所知是这样。如果我尝试访问 id
属性 但它不存在于请求正文中,我将收到来自 JsonPath 的异常:com.jayway.jsonpath.PathNotFoundException: No results for path: $['id']
。如果我可以配置 JsonPath,我可以使用 Option.DEFAULT_PATH_LEAF_TO_NULL
并且对于不存在的元素我会得到 null
。但是我无法获得 JsonPath 配置,它恰好被锁定在 JsonProjectingMethodInterceptorFactory
.
有没有办法让我在这里指定一个默认值?或者有没有办法让我检测 id
是否存在,而无需首先访问 id
属性?
这是一个错误,已通过 DATACMNS-1145 修复。将与 Ingalls SR7 一起发布,并与 Boot 1.5.7 一起发布。