1
我正在開發一個使用java和glassfish的restful webservice。該web服務消耗JSON。我創建了一個帶有幾個簡單字段的JAXB bean以及其他jaxb bean的嵌套數組。我已經在下面列出了相關的代碼。從嵌套數組上載jaxb bean返回的狀態400
當我使用只填充簡單字段時,web服務接受入站bean,處理它並適當地返回。
當我添加子bean的嵌套數組時,我從服務器返回狀態400 ...我擔心我註釋getter方法的方式可能會影響傳遞給它的整個bean服務器?
我還添加了代碼爲我測試我使用的咖啡豆推到服務器
這裏是web服務的問題的方法簽名:
@POST
@Path("test1")
@Consumes(MediaType.APPLICATION_JSON)
public Response createRecord(JAXB_ExampleBean track)
這裏是頂級豆:
@XmlRootElement(name = "example")
@XmlType(propOrder = { "id", "idCreator", "title", "revList" })
public class JAXB_ExampleBean
{
private long id = 0;
private long idCreator;
private String title;
private ArrayList<JAXB_ExampleRevBean> revList;
@XmlElementWrapper(name = "exampleList")
@XmlElement(name = "exampleRevision")
public ArrayList<JAXB_ExampleRevBean> getRevList()
{
return revList;
}
// other getters/setters omitted for brevity no additional annotations on them
}
這裏是嵌套的bean:
@XmlRootElement(name = "exampleRevision")
@XmlType(propOrder = { "id", "idExample", "idAuthor", "revOrder" })
public class JAXB_ExampleRevBean
{
private long id = 0;
private long idExample;
private long idAuthor;
private int revOrder;
// getters/setters omitted for brevity no additional annotations on them
}
下面是測試代碼:
WebResource webResource = client.resource("http://example.com/resources/meta/test1");
JAXB_ExampleBean beanToUpload = buildExampleBeanToSend();
ClientResponse response = webResource.type("application/json").post(ClientResponse.class, beanToUpload);
if(response.getStatus() != 201)
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
你用什麼作爲JSON綁定提供程序?如果您不確定您使用的是哪個應用程序服務器? – 2013-03-13 19:30:45
好的...我現在很近!我刪除了列表的getter方法的兩個註釋,並將ArrayList轉換爲List。我能夠將bean推送到服務器,但現在當列表只包含1個對象時,它會失敗......列表中有2個或更多的條目,它可以工作...請幫助! – cotfessi 2013-03-14 18:37:24