如何使用JQuery和Jersey传递Web表单的参数

时间:2013-01-01 17:01:51

标签: jquery rest jersey

我的问题是我有一个网络表单,我想将这些数据发送到Jersey restFULL方法。

在我的Javascript中我有这个电话:

 console.log('Sending event creation ---> '+eventInJsonString);
$.ajax({
    url: "/Bxip/rest/events/",
//  dataType: 'json',
    type: 'post',
    data: eventInJsonString,
    contentType: 'multipart/form-data',
    success: function(data) {
        console.log("success ", data.response);
    },
    error: function(data) {
        console.log("error ", data.error);
    }
});

我的球衣方法是:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_HTML)
//Retornará HTTP_STATUS 204 (on success)
public String addEvent(
        @FormParam("title") String title,
        @FormParam("fechaInicio") String fechaInicio,
        @FormParam("lugar") String lugar,
        @FormParam("categoria") String categoria,
        @FormParam("description") String description,
        @FormParam("fechaFin") String fechaFin) throws IOException {

    System.out.println("ENTRAAA    = " + title + description);

发送数据前的结果:

 Sending event creation ---> {"title":"aaaa","description":"        aaaaa","fechaInicio":"bbbb","categoria":"Beber y comer","fechaFin":"forever"}

但是在Java服务器端,参数为null:

ENTRAAA    = nullnull

如何从客户端向此球衣方法发送@POST

1 个答案:

答案 0 :(得分:3)

有几种方法可以做到这一点。这里有两种可能性:

  • 使用params

要在泽西岛接收@ FormParam,您应该发送帖子正文中编码的数据网址。

请求的ContentType应为

application/x-www-form-urlencoded

并且eventInJsonString的内容应该是

title=aaaa&description=aaaaa&fechaInicio=bbbb&categoria=Beber y comer&fechaFin=forever

要在Jersey中处理此问题,您应该将@Consumes类型更改为

@Consumes(MediaType.APPLICATION_FORM_URLENCODED)

这样你就可以获得@ FormParam了。

  • 使用json

问题是您正在尝试在json中发送数据。如果你想以这种方式发送它,你也需要改变一些事情:

您需要将请求ContentType更改为

application/json

在泽西岛,您需要将@Consumes类型更改为

@Consumes(MediaType.APPLICATION_JSON)

如果你这样发送,你还需要从方法中删除@ FormParam:

public String addEvent(String jsonBody) throws IOException {

    // Now you need to parse the json to get your parameters...