2012-02-20 13 views
6

sto sviluppando una web app in cui ho un modulo del genereUtilizzando Jersey di leggere i dati dei moduli

<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> 

Sul lato server, Stiamo usando Jersey (su GAE). Ed ecco quello che sto cercando di usare per leggere i valori POST

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

Ma non funziona ... Mi torna ...

HTTP ERROR 415 

Problem accessing /login/create-user. Reason: 

Unsupported Media Type 

Tutte le idee? Che cosa sto facendo di sbagliato?

Grazie!

risposta

13

provare questo:

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

multipart è qualcosa di leggermente diverso, vedi esempio jersey multipart-webapp o vedere http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html. Il tuo modulo web non lo sta producendo, quindi Jersey restituisce correttamente 415 - Tipo di supporto non supportato, perché non hai alcuna risorsa che gestisce il tipo di supporto "application/x-www-form-urlencoded".

+2

Avrai bisogno anche di [jersey-multipart] (http://search.maven.org/#search|ga|1|a%3A%22jersey-multipart%22). –

+0

@DrewStephens È possibile avere un singolo percorso che serve sia urlencode sia richieste POST multiparto? http://stackoverflow.com/questions/19104413/jersey-switch-on-content-type-dynamically –

+1

C'è un modo per inviare il modulo con 10 campi, ma senza aggiungere 10 linee '@ FormParam' –

1

Solo per semplificare: nel caso in cui sia l'unico gestore di richieste mappato all'URL specifico (in tal caso "test") e con il metodo HTTP specifico (POST), è possibile evitare l'utilizzo di @Consumes!

Problemi correlati