Фильтр JAXRS-2.0: как добавить ссылки на ContainerResponse
Я реализую ContainerResponseFilter
это добавит гипермедиа ссылки на ответ.
Подпись метода в ContainerResponseFilter
является:
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException
к несчастью ContainerResponseContext
не позволяет мне установить Response
объект, и пока есть getLinks()
методов нет addLink(Link)
или же setLinks(Link...)
методы.
Я старался
responseContext.setEntity(Response.ok().links(link).build());
но это привело к исключению, которое говорит, что они могут найти MessageBodyWriter
за ResponseImpl
, Также попробовал
responseContext.getLinks().add(link);
который тоже не работает.
Кто-нибудь когда-либо делал это?
2 ответа
Поэтому я нашел способ сделать это, заменив сущность:
URI uri = uriInfo.getBaseUriBuilder().path(RESOURCE_CLASS).path(RESOURCE_METHOD).build(domain_object.getId());
JaxbLink jaxbLink = new JaxbLink(uri);
responseContext.setEntity(jaxbLink);
Не уверен, что это на 100% правильно, но, похоже, работает.
Вы должны ввести:
@Context HttpServletResponse r;
как локальное поле. Все изменения должны быть сделаны там.