2016-09-13 4 views
0

Я создаю веб-сервис Джерси с dropwizard. Клиент использует JsonP для перекрестных доменных сообщений ajax.Jersey QueryParam получен как null

Я получил метод ресурса, который выглядит следующим образом:

@Path("/addUser") 
@GET 
@UnitOfWork 
public String registerPortalUser(@Context HttpServletRequest req, @QueryParam("callback") String callback, @QueryParam("thedata") MyClass recordData) throws Throwable 
{ .. } 

я получаю параметр обратного вызова, как я ожидал, но вместо того, чтобы получать одну строку JSON, которая, как предполагается, будет введен в MyClass член, я получить много параметров, которые являются именами членов MyClass и его значениями. Значение, вместо того, чтобы получать все как одну строку Json, я разделяю все члены.

Что может быть причиной этого?

+0

Добавить объект MyClass на этот вопрос, поскольку это, скорее всего, будет проблемой здесь. И, пожалуйста, добавьте образец запроса, который вы делаете – pandaadb

ответ

1

Вопрос был с клиентом. Клиент посылает JSON как это:

var thedata = 
{ 
    member1 = "value1", 
    member2 = "value2" 
} 

Что решил его отправляли это следующим образом:

var thedata= 
[ thedata: 
    { 
    member1 = "value1", 
    member2 = "value2" 
    } 
] 

После его изменений, Джерси признал его в качестве запрошенного параметра

+0

Можете ли вы опубликовать свой код клиента, чтобы остальные из нас (глядя на это) не допустили ошибку? –

0

Вы, очевидно, отправляете на объект пустой объект MyClass. Код вашего клиента может выглядеть так:

 MyClass myC = new MyClass(); 
    //populate MyClass fields 
     WebTarget target = client.target(UriBuilder.fromUri("http://localhost:8088/YourWebApp").build()); 


     String res =(String) target.path("addUser").queryParam("thedata", myC).request().accept(MediaType.TEXT_PLAIN).get(String.class); 
Смежные вопросы