Фильтр 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;

как локальное поле. Все изменения должны быть сделаны там.

Другие вопросы по тегам