web-dev-qa-db-fra.com

Comment obtenir POST dans la méthode JAX-RS?

Je développe des services RESTful avec Jersey et cela fonctionne très bien avec les méthodes GET. Mais je ne peux obtenir les paramètres null qu'en utilisant la méthode POST. Voici l'exemple de code de mon projet.

HTML

<form action="rest/console/sendemail" method="post">
  <input type="text" id="email" name="email">
  <button type="submit">Send</button>
</form> 

Java

@POST
@Path("/sendemail")
public Response sendEmail(@QueryParam("email") String email) {
    System.out.println(email);
    return  new Response();
}

L'email que je reçois de la poste est toujours nul. Quelqu'un a l'idée?

J'ai changé QueryParam en FormParam, le paramètre que j'obtiens est toujours nul.

26
user1573269

Dans un formulaire soumis via POST, email n'est pas un @QueryParam comme dans /[email protected].

Si vous soumettez votre code HTML form via POST, email est un @FormParam.

Modifier:

Il s'agit d'une ressource JAX-RS minimale qui peut gérer votre formulaire HTML.

package rest;

import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/console")
public class Console {

    @POST
    @Path("/sendemail")
    @Produces(MediaType.TEXT_PLAIN)
    public Response sendEmail(@FormParam("email") String email) {
        System.out.println(email);
        return Response.ok("email=" + email).build();
    }
}
35
user647772

Juste pour noter un petit détail - chaque valeur d'entrée que vous souhaitez soumettre dans le cadre de votre formulaire doit avoir l'attribut "nom".

<input type="text" id="email" name="email" />
1
morgan_il