2010-11-20 22 views
21

J'essaie de récupérer certains paramètres qui sont passés à jax-rs à partir d'un formulaire posté avec le HttpServletRequest. Cependant, mon objet de requête renvoie toujours des valeurs nulles pour mes paramètres. Est-ce que je ne vais pas à propos de ça de la bonne façon? J'ai posté le code ci-dessous, avec un exemple de demande qui est envoyé.jax-rs récupérer les paramètres de formulaire

Voici mon service:

@Path("/") 
@Stateless 
public class HomeController { 

    @Context 
    private HttpServletRequest request; 
    @Context 
    private HttpServletResponse response; 
    @EJB 
    private LoginServiceLocal loginService; 

    @POST 
    @Path("/authenticate") 
    @Consumes("application/x-www-form-urlencoded") 
    public void authenticate() throws Exception { 
     String email = request.getParameter("email"); 
     String password = request.getParameter("password"); 
     if (loginService.authenticate(email, password)) { 
      response.sendRedirect("/app"); 
     } else { 
      request.setAttribute("authenticationError", "Invalid email/password."); 

     } 
    } 
} 

demande Exemple:

POST http://localhost:8081/cheetah-web/authenticate HTTP/1.1 
Host: localhost:8081 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Referer: http://localhost:8081/cheetah-web/login 
Cookie: JSESSIONID=a4e7aec0624206ad33754e35cce4 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 39 

email=unit%40test.com&password=testpass 

Répondre

37
@POST 
@Path("/authenticate") 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public void authenticate(@FormParam("email") String email, @FormParam("password") String password) throws Exception { 

    if (loginService.authenticate(email, password)) { 
     response.sendRedirect("/app"); 
    } else { 
     request.setAttribute("authenticationError", "Invalid email/password."); 

    } 
} 
+5

Comment récupérer toutes les formes params à la fois que nous pouvons faire pour la requête en utilisant params UriInfo.getQueryParameters() –

+18

Vous utiliseriez un MultivaluedMap en tant que paramètre. Par exemple, public void authenticate (MultivaluedMap form) {...} –