通过嵌套数组上传jaxb bean返回状态400

时间:2013-03-13 17:59:59

标签: java json jaxb

我正在使用java和glassfish开发一个restful webservice。 Web服务使用JSON。我创建了一个带有几个简单字段的JAXB bean以及其他jaxb bean的嵌套数组。我在下面列出了相关代码。

当我使用简单字段填充我的bean时,Web服务接受传入的bean,处理它并正确返回。

当我添加嵌套的子bean数组时,我从服务器返回状态400 ...我担心我注释getter方法的方式可能会影响整个bean,因为它传递给了服务器

我还为我的测试人员添加了代码,用于将bean推送到服务器

这是相关网络服务的方法签名:

@POST
@Path( "test1" )
@Consumes( MediaType.APPLICATION_JSON )
public Response createRecord( JAXB_ExampleBean track )

这是顶级bean:

@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() );

1 个答案:

答案 0 :(得分:0)

您应该尝试使用array []或List而不是Arraylist。大多数序列化/反序列化框架不处理具体的集合类。