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