2015-04-02 1 views
2

ce qui est l'équivalent Restlet de l' extrait de code suivant j'utilise avec Jersey:Récupération id ressource Restlet

@GET 
    @Path("{id}") 
    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON,MediaType.TEXT_XML}) 
    public Todo getEntityXMLOrJSON(@PathParam("id") int id) 
    { 
    ... 
    } 

Je veux dire, lorsque vous utilisez le cadre Restlet je fais ce qui suit:

public class ContactsApplication extends Application { 
    public Restlet createInboundRoot() { 
     Router router = new Router(getContext()); 
     router.attach("/contacts/{contactId}", ContactServerResource.class); 
     return router; 
    } 
} 

Comment puis-je récupérer contactId dans la méthode get?

Répondre

1

Si vous définissez un paramètre de chemin lors de la fixation d'une ressource de serveur, vous pouvez accéder à sa valeur dans cette ressource serveur en utilisant la méthode getAttribute, comme décrit ci-dessous:

public class ContactServerResource extends ServerResource { 
    @Get 
    public Contact getContact() { 
     String contactId = getAttribute("contactId"); 
     (...) 
    } 
} 

Vous pouvez remarquer que vous pouvez définir ces éléments comme variables d'instance. Le code suivant est une implémentation typique d'une ressource de serveur ContactServerResource:

public class ContactServerResource extends ServerResource { 
    private Contact contact; 

    @Override 
    protected void doInit() throws ResourceException { 
     String contactId = getAttribute("contactId"); 
     // Load the contact from backend 
     this.contact = (...) 
     setExisting(this.contact != null); 
    } 

    @Get 
    public Contact getContact() { 
     return contact; 
    } 

    @Put 
    public void updateContact(Contact contactToUpdate) { 
     // Update the contact based on both contactToUpdate 
     // and contact (that contains the contact id) 
    } 

    @Delete 
    public void deleteContact() { 
     // Delete the contact based on the variable "contact" 
    } 
} 

Espérons que cela vous aide, Thierry

+0

Dans mon ServerResource la méthode getAttribute() ne semble pas exsist, avez-vous une idée de pourquoi ? J'ai résolu en utilisant la méthode getRequestAttributes(). Get (id) – GionJh

+0

En fait, la méthode 'getAttribute' est un raccourci de la méthode' getRequestAttributes(). Get (id) ';-) Quelle version de Restlet utilisez-vous? –

+0

J'utilise la version 2.0.5 – GionJh