我正在实现一个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);


这也不起作用。

有人做过吗?

最佳答案

您应该注入:

@Context HttpServletResponse r;


作为本地字段。所有更改都应在此完成。

10-01 19:10