2010-07-29 8 views
7

Die JAX-RS-Implementierung Jersey unterstützt MVC-Webanwendungen über die Viewable-Klasse, die ein Container für einen Vorlagennamen und ein Modellobjekt ist. Es ist used like this:Jersey Sichtbar mit Statuscode

@GET 
public Viewable get() { 
    return new Viewable("/index", "FOO"); 
} 

Ich frage mich, wie ein Statuscode mit diesem Ansatz zurückgeführt werden könnte. Das obige würde implizit 200 zurückgeben, aber das wäre in keinem Fall angemessen. Gibt es eine Möglichkeit, einen Statuscode explizit festzulegen?

Antwort

12

Sie müssen eine Response Einrichtung mit dem korrekten Statuscode und den Kopfzeilen, die Ihre Viewable enthalten, zurückgeben. Beispiel:

@GET 
public Response get() { 
    return Response.status(myCode).entity(new Viewable("/index", "FOO")).build(); 
} 
+1

Manchmal ist es einfacher als Sie denken! – deamon

5

Hmm können Sie benutzerdefinierte Response-Objekt in Jersey thusly erstellen: dies wird wieder ein 200:

@GET 
public Response get() { 
    URI uri=new URI("http://nohost/context"); 
    Viewable viewable=new Viewable("/index", "FOO"); 
    return Response.ok(viewable).build(); 
} 

etwas anderes verwenden diesen Ansatz zurück:

@GET 
public Response get() { 
    int statusCode=204; 
    Viewable myViewable=new Viewable("/index","FOO"); 
    return Response.status(statusCode).entity(myViewable).build(); 
} 

Hoffnung, die dazu beigetragen ...