【发布时间】:2018-01-02 01:37:47
【问题描述】:
目前面临一个问题,我想根据传递到响应中的一些信息来更改 jax-rs 资源的响应。需要做的改变是一些json的格式。目前我正在使用 jax @Provider 和 ContextResolver 注册一个 ObjectMapper。然而,getContext() 方法只为每个资源类调用一次。不可能根据每个请求来更改它。
是否可以在 ContainerResponseFilter 中注入或访问 ObjectMapper?
@Provider
public class ObjectMapperResolver implements ContextResolver<ObjectMapper> {
@Context
private HttpServletRequest httpRequest;
private final ObjectMapper mapper;
public ObjectMapperContextResolver() {
mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addDeserializer(Date.class, new DateDeserializer("some data format"));
mapper.registerModule(module);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return getMapperBasedOnRequest();
}
private ObjectMapper getMapperBasedOnRequest() {
if (true) {
return mapper;
} else {
return //something else;
}
}
private boolean containsLegacyHeader() {
return //get some information from the request headers or body
}
}
【问题讨论】:
标签: java jackson jersey jax-rs