Использование Джерси для чтения данных формы - PullRequest
6 голосов
/ 20 февраля 2012

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

<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

Есть идеи? Что я делаю не так?

Спасибо!

Ответы [ 2 ]

15 голосов
/ 20 февраля 2012

попробуйте это:

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

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

0 голосов
/ 21 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...