0

我的问题是我有一个 Web 表单,我想将此数据发送到 Jersey restFULLMethod。

在我的 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 服务器端,参数为空:

ENTRAAA    = nullnull

我怎样才能@POST从客户端发送到这个球衣方法?

4

1 回答 1

3

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

  • 使用参数

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

请求的 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...
于 2013-01-02T10:39:17.270 回答