2017-01-12 3 views
1

Ich bin ein ContainerResponseFilter implementieren, die Hypermedia-Links zu der Antwort hinzufügen würde.JAXRS-2.0 Filter: Wie fügt man Links zu ContainerResponse

Die Methode Signatur im ContainerResponseFilter ist:

public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException 

Leider ContainerResponseContext erlaubt mir nicht, ein Response Objekt zu setzen, und während es getLinks() Methoden sind, gibt es nicht addLink(Link) oder setLinks(Link...) Methoden.

Ich versuchte

responseContext.setEntity(Response.ok().links(link).build()); 

aber, dass in Ausnahmefällen geführt, die sagten, dass sie einen MessageBodyWriter für ResponseImpl finden konnten. Auch versucht

responseContext.getLinks().add(link); 

was auch nicht funktioniert.

Wer hat das jemals getan?

Antwort

0

sollten Sie injizieren:

@Context HttpServletResponse r; 

als lokales Feld. Alle Änderungen sollten bis dahin durchgeführt werden.

+0

:/Ich möchte die Antwort nicht direkt manipulieren ... Ich werde Marshalling/Encoding verknüpfen und so etwas passieren –

0

So fand ich einen Weg, dies zu tun, indem die Einheit ersetzt:

URI uri = uriInfo.getBaseUriBuilder().path(RESOURCE_CLASS).path(RESOURCE_METHOD).build(domain_object.getId()); 
JaxbLink jaxbLink = new JaxbLink(uri); 
responseContext.setEntity(jaxbLink); 

nicht sicher, dies ist ein 100% richtig, aber es scheint zu funktionieren.

Verwandte Themen