我正在使用 java 和 glassfish 开发一个宁静的 web 服务。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() );