2015-01-22 1 views
0

я следующий метод Джерси декларации:Как аннотировать метод джерси, если я хочу передать json?

@POST 
    @Path("/fooPath") 
    @Produces({MediaType.APPLICATION_JSON}) 
    @Consumes({MediaType.APPLICATION_JSON}) 
    public Response isSellableOnline(@FormParam("productCodes") final List<String> productCodes, 
            @FormParam("storeName") final String storeName, 
            @Context HttpServletRequest request) { 

В клиенте отдыха я пытаюсь вызвать следующий метод так: enter image description here

Когда я отладки метод, который я вижу, что полученные параметры равны нулю:

enter image description here

Как переписать декларацию метода?

+0

Там должно быть что-то в журналах сервера. Отправьте это тоже. – Gimby

+0

Вы правы. Теперь я перефразирую вопрос. – gstackoverflow

+0

@ По темам обновлено. – gstackoverflow

ответ

3

Это потому, что по методу isSellableOnlie вы ожидаете или пытаетесь извлечь параметры формы, но входящий запрос POST - JSON.

Ну, если вы хотите JSON, вы должны сделать класс POJO для сериализации JSON.

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Store { 

private String storeName; 
private List<String> productCodes; 

public Store() { 
} 

public String getName() { 
    return name; 
} 

public List<String> getProductCodes() { 
    return productCodes; 
} 
} 

И тогда в вашем методе:

@POST 
@Path("/fooPath") 
@Produces({MediaType.APPLICATION_JSON}) 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response isSellableOnline(Store store) { 
    store.getName(); 
... 
} 
+0

Как переписать мой метод? – gstackoverflow

+0

Очень полезный ответ – gstackoverflow