我有一个基于Wildfly 15的应用程序,它使用Yasson在REST请求中序列化实体。我使用javaee-api 8.0.1,并创建了一个名为 ContextResolver
用于配置日期序列化格式,如在 https:/stackoverflow.coma56300246584532。.
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonbDateConfig implements ContextResolver<Jsonb> {
// ...
}
然而,当使用下面的代码发送REST请求时,配置被忽略了(在以下方法中没有调试断点 JsonbDateConfig
被触发)。)
Response response = target.path(REST_SERVICE_NAME)
.request()
.post(Entity.entity(dataTO, MediaType.APPLICATION_JSON));
因此,生成的JSON包含一个不正确格式化的日期值。
我可以创建一个 JsonbAdapter
并添加注释 @JsonbTypeAdapter(DateAdapter.class)
类型的字段。java.util.Date
. 然而,我更喜欢适用于所有日期字段的解决方案。有什么办法可以解决这个问题?ContextResolver
不工作?
请注意,Wildfly加载了我的实现类 ContextResolver
在启动期间(类加载断点),当我收到传入的 REST 请求时,会使用这个解析器。
由于你使用的是JAX-RS客户端,你需要在客户端注册提供者。
Response response = target.path(REST_SERVICE_NAME)
.register(JsonbDateConfig.class)
.request()
.post(Entity.entity(dataTO, MediaType.APPLICATION_JSON));