Как сделать почтовый вызов ajax с данными JSON в службу отдыха Джерси?

Я прошел по этой ссылке. но это мне не помогло.

Я использую jerseylib v1.17.1. Моя услуга по отдыху с трикотажем:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
public ResponseBean post1(@QueryParam("param1")String param1)
{
    return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true);
}

адрес: /test/post1

Мой вызов ajax:

var d = {"param1":"just a dummy data"};
    $.ajax({
        type : "POST",
        url : "http://localhost:7070/scl/rs/test/post1",
        contentType :"application/json; charSet=UTF-8",
        data : d,
        dataType : "json"
    })
    .done(function(data){
        console.log(data);
    })
    .fail(function(data){
        console.log(data);
    });

Это касается моей службы отдыха, но поскольку param1 я всегда получаю нулевое значение. Альтернативным решением является добавление JavaBean с @XMLRootElement, который будет маршалировать/демаршалировать объект java в json и наоборот, но я не хочу использовать это.
Есть ли способ опубликовать данные и получить их, используя соответствующую аннотацию, например @QueryParam или что-то вроде того ? Пожалуйста помоги


person user3137239    schedule 11.02.2014    source источник


Ответы (2)


Ваш код на стороне сервера должен быть таким:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
public ResponseBean post1(Data param1)
{
    return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true);
}

где Data — это класс (POJO), аннотированный @XmlRootElement и соответствующий данным JSON, которые отправит ваш клиент (т. е. иметь поле param1 с геттером и сеттером). Реализация JAX-RS преобразует тело POST в экземпляр Data.

Аннотация @QueryParam используется для получения параметров запроса в (обычно) GET запросах. Параметры запроса — это параметры после вопросительного знака (?). Например: @QueryParam("start") String start будет отображаться как 1 при обработке следующего запроса: GET http://foo.com/bar?start=1, но это не то, что вы делаете в вашем случае, AFAICS.

person Xavier Coulon    schedule 11.02.2014

@XMLRootElement - это способ сделать это, поскольку json должен быть неупорядочен, прежде чем вы сможете использовать любой из его элементов.

person Vasile    schedule 11.02.2014