Utilizzando JAXB/xjc fornito con JDK 1.7 (bin \ xjc.exe)JAXB/XJC genera JAXBElement <String> piuttosto che solo String (per gestire caso null)
ecco una snipped della mia XSD:
<xs:complexType name="NameType">
<xs:sequence>
<xs:element name="Surname" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="Firstname" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="Middlename" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
la classe generata spettacoli:
@XmlElementRef(name = "Surname", type = JAXBElement.class, required = false)
protected JAXBElement<String> surname;
public JAXBElement<String> getSurname() {
return surname;
}
public void setSurname(JAXBElement<String> value) {
this.surname = value;
}
capisco JAXB sta usando JAXBElement per permettere nulla, ma questo non ha senso dal momento che nulla dichiarato come stringa può essere impostato su null.
E non ho la possibilità di modificare l'XSD, perché il mio cliente preferisce lasciare in produzione l'XSD esistente.
Domanda: Posso cambiare il generatore di codice per generare:
@XmlElementRef(name = "Surname", type = String.class, required = false)
protected String surname;
public String getSurname() {
return surname;
}
public void setSurname(String value) {
this.surname = value;
}
Grazie Joel
Grazie per l'aiuto F1sh. Sembra funzionare. Risponderò se ci sono ulteriori problemi. – joellucuik
Grazie mille per il tuo commento, mi ha davvero risolto il problema dopo diversi giorni di tentativi di trovare una soluzione! – Dmitriy