Как получить параметр POST в методе JAX-RS?
Я разрабатываю услуги RESTful с Джерси, и он отлично работает с методами GET
. Но я могу получить только параметры null
, используя метод POST
. Вот пример кода из моего проекта.
HTML
<form action="rest/console/sendemail" method="post">
<input type="text" id="email" name="email">
<button type="submit">Send</button>
</form>
Java
@POST
@Path("/sendemail")
public Response sendEmail(@QueryParam("email") String email) {
System.out.println(email);
return new Response();
}
Письмо, которое я получаю из сообщения, всегда равно null.
У кого-нибудь есть идея?
Я изменил QueryParam на FormParam, параметр, который я получаю, по-прежнему равен нулю.
Ответы
Ответ 1
В форме, представленной через POST
, email
не является @QueryParam
, как в /[email protected]
.
Если вы отправляете свой HTML form
через POST
, email
является @FormParam
.
Edit:
Это минимальный ресурс JAX-RS, который может обрабатывать вашу HTML-форму.
package rest;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/console")
public class Console {
@POST
@Path("/sendemail")
@Produces(MediaType.TEXT_PLAIN)
public Response sendEmail(@FormParam("email") String email) {
System.out.println(email);
return Response.ok("email=" + email).build();
}
}
Ответ 2
Просто отметим одну небольшую деталь - каждое входное значение, которое вы хотите отправить как часть вашей формы, должно иметь атрибут "name".
<input type="text" id="email" name="email" />