2012-02-20 2 views
6

Я занимаюсь разработкой веб-приложение, где у меня есть форма, как, чтоИспользование Джерси читать данные формы

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

На стороне сервера Мы используем Джерси (на GAE). И вот что я пытаюсь использовать для чтения значения POST

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

Но это не работает ... Это возвращает меня ...

HTTP ERROR 415 

Problem accessing /login/create-user. Reason: 

Unsupported Media Type 

Любые идеи? Что я делаю не так?

Спасибо!

ответ

13

попробовать это:

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

Multipart что-то немного отличается, см джерси образец многослойную-веб-приложение или увидеть http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html. Ваша веб-форма не производит его, поэтому Джерси правильно возвращает 415 - Тип неподдерживаемого носителя, потому что у вас нет какого-либо ресурса, который обрабатывает тип носителя «application/x-www-form-urlencoded».

+2

Вам также понадобится [jersey-multipart] (http://search.maven.org/#search|ga|1|a%3A%22jersey-multipart%22). –

+0

@DrewStephens Возможно ли иметь один путь, который обслуживает запросы urlencode или multipart POST? http://stackoverflow.com/questions/19104413/jersey-switch-on-content-type-dynamically –

+1

Есть ли способ отправить форму с 10 полями, но без добавления 10 строк '@ FormParam' –

1

Просто для упрощения: в случае, если он является единственным обработчиком запросов, сопоставленным определенному URL-адресу (в данном случае «тесту») и конкретному методу HTTP (POST), вы можете избежать использования @Consumes!

Смежные вопросы