1

我正在使用 Resteasy 开发 RestWebService。基本实现工作正常。知道我试图通过休息返回一个复杂的对象......实际上它很容易......我想。由于我的嵌套对象(地址),我遇到了问题......

我尝试的是这样的:

@XmlRootElement(name = "person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person implements Serializable {
    private static final long serialVersionUID = 1199647317278849602L;
    private String uri;
    private String vName;
    private String nName;
    private Address address;

        .....

        @XmlElementWrapper(name="Former-User-Ids")
    @XmlElement(name="Adress")
    public Address getAddress() {
        return address;
    }
....

地址如下所示:

@XmlRootElement(name = "address")
@XmlAccessorType(XmlAccessType.FIELD)
public class Address {
    private String uri;
    private String street;
    private String city;

public String getCity() {
    return city;
}

public String getStreet() {
    return street;
}

.... Restservice 看起来像这样。没有地址对象,它工作得很好。

    @Path("/getPersonXML/{personNumber}")
    @GET
    @Produces(MediaType.APPLICATION_XML)
    public Patient getPatientXML(@PathParam("personNumber") String personNumber) throws ParseException {

        Address a1 = new Address("de.person/address/" + "432432","Teststret12","TestCity", "32433", "TestCountry", "081511833");
        Patient p1 = new Person();
        p1.setAddress(a1);
        p1.setUri("de.spironto/person/"+ "432432");
        p1.setnName("Power");
        p1.setvName("Max");
        return p1;
    }

目前我总是得到一个

javax.xml.bind.JAXBException:

有任何想法吗?

4

2 回答 2

1

注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB (JSR-222)专家组的成员。

问题

@XmlElementWrapper注释必须与集合属性一起使用。这意味着您可以拥有:

@XmlElementWrapper
public List<PhoneNumber> getPhoneNumbers() {
    return phoneNumbers;
}

但不是

@XmlElementWrapper
public Address getAddress() {
    return address;
}

解决方案 #1 - 使用任何 JAXB Proivder

您可以使用 anXmlAdapter来完成此操作(请参阅下面的链接答案):

解决方案 #2 - 使用 EclipseLink JAXB (MOXy)

您可以利用@XmlPath扩展来映射此用例:

@XmlPath("Former-User-Ids/Address")
public Address getAddress() {
    return address;
}

了解更多信息

于 2013-05-15T14:56:32.050 回答
0

在构建了一个小型编组器测试之后。我失败了,有几个同名的属性。所以我试图删除 Address 类中的所有@XML_Eleemets 注释。这对我有用...

于 2013-05-17T13:07:41.527 回答