2012-02-20 17 views
6

Estoy desarrollando una aplicación web en la que tengo una forma como esaJersey para leer los datos del formulario

<form name="form" action="create-user" method="post"> 
    <input name="accept" type="checkbox"><span>{{acceptLegalTerms}}</span><br> 
    <input type="submit" value="{{Continue}}" class="primary fright"/> 
</form> 

En el lado del servidor, estamos utilizando Jersey (en GAE). Y esto es lo que estoy tratando de utilizar para leer los valores de la POST

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Path("create-user") 
public Response createUser(@FormDataParam("accept") boolean acceptForm) { 
    return Response.ok().entity(acceptForm).build(); 
} 

Pero no funciona ... Me vuelve ...

HTTP ERROR 415 

Problem accessing /login/create-user. Reason: 

Unsupported Media Type 

¿Alguna idea? ¿Qué estoy haciendo mal?

Gracias!

Respuesta

13

probar esto:

@Path("test") 
@POST 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public String testForm(@FormParam("accept") String accept) { 
    return accept; 
} 

multiparte es algo ligeramente diferente, vea el ejemplo de varias partes Jersey-webapp o ver http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html. Su formulario web no lo está produciendo, por lo que Jersey devuelve correctamente 415 - Tipo de medio no admitido, porque no tiene ningún recurso que maneje el tipo de medio "application/x-www-form-urlencoded".

+2

Necesitarás [jersey-multipart] (http://search.maven.org/#search|ga|1|a%3A%22jersey-multipart%22) también. –

+0

@DrewStephens ¿Es posible tener una única ruta que sirva tanto para solicitudes urlencode como POST de varias partes? http://stackoverflow.com/questions/19104413/jersey-switch-on-content-type-dynamically –

+1

¿Hay alguna forma de enviar formularios con 10 campos, pero sin agregar 10 líneas '@ FormParam' –

1

Solo para hacerlo simple: en caso de que sea el único manejador de solicitudes mapeado a la URL específica (en ese caso "prueba") y con el método HTTP (POST) específico, ¡puede evitar el uso de @Consumes!

Cuestiones relacionadas