2012-04-10 11 views
8

tengo una clase de Cliente y CustomerFullAddress y estoy usando JAXB para tratar de producir un archivo XML2 recuento de Excepción de anotación ilegal

<Customer CustomerID="GREAL"> 
    <CompanyName>Great Lakes Food Market</CompanyName> 
    <ContactName>Howard Snyder</ContactName> 
    <ContactTitle>Marketing Manager</ContactTitle> 
    <Phone>(503) 555-7555</Phone> 
    <FullAddress> 
     <Address>2732 Baker Blvd.</Address> 
     <City>Eugene</City> 
     <Region>OR</Region> 
     <PostalCode>97403</PostalCode> 
     <Country>USA</Country> 
    </FullAddress> 
</Customer> 

La clase de cliente se parece a continuación (No es una implementación completa)

package org.abc.customers; 

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

@XmlRootElement(name = "customer") 
@XmlType (propOrder = { "companyName", "contactName", "contactTitle", "phone" }) 

public class Customer { 

*@XmlElement(name = "customerfulladdress") 
private CustomerFullAddress custAdd;* 

private String companyName; 
private String contactName; 
private String contactTitle; 
private int phone; 

public CustomerFullAddress getCustAddress() { 
return custAdd; 
} 

public void setCustAddress(CustomerFullAddress custAdd) { 
this.custAdd = custAdd; 
} 
... 

Mientras que el CustomerFullAddress es

package org.abc.customers; 

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

@XmlRootElement(name = "customerfulladdress") 
//If you want you can define the order in which the fields are written 
//Optional 
@XmlType(propOrder = { "address", "city", "region", "postalCode", "country" }) 

public class CustomerFullAddress { 

private String address; 
... 

public String getAddress() { 
    return address; 
} 
public void setAddress(String address) { 
    this.address = address; 
} 
..... 
} 

y el error es

Excepción en el hilo "principal" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 cargos de IllegalAnnotationExceptions Propiedad custAdd está presente, pero no especifica en @ XmlType.propOrder este problema es relacionado con el siguiente ubicación: en privado org.abc.customers.CustomerFullAddress org.abc.customers.Customer.custAdd en org.abc.customers.Customer propiedad custAddress está presente pero no se especifica en @ XmlType.propOrder este el problema está relacionado con la siguiente ubicación de : en public org.abc.customers.Cus tomerFullAddress org.abc.customers.Customer.getCustAddress() en org.abc.customers.Customer

Gracias por tener una mirada!

Respuesta

10

Desde el Javadoc para @XmlType:

propOrder

Todas las propiedades JavaBean que se asignan a los elementos del esquema XML deben ser enumerados.

es necesario agregar la propiedad CustomerFullAddress a la propOrder para Customer.

Cuestiones relacionadas