Devo generare un elemento xml che può avere come valore qualsiasi "tipo primitivo" (xsd: string, xsd: booleano, ecc.). Esempi:JAXB - Imposta un XmlAdapter solo per un sottotipo specifico di un elemento?
<field xsi:type="xsd:string" name="aString">String Value</field>
<field xsi:type="xsd:dateTime" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
...
Quindi, io uso questa implementazione che rende JAXB decidere il xsi:type
del tipo primitivo:
public class Field {
@XmlAttribute
private String name;
@XmlElement
Object value;
}
e sta funzionando come previsto, ma tutto il java.util.Date Ottiene il tipo xs:dateTime
...
Ora voglio cambiare il comportamento del marshaller solo quando l'oggetto 'valore' è un esempio di java.util.Date per ottiene campi come questo:
<field xsi:type="xsd:date" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
Quindi creare un adattatore, ma se provo questo:
@XmlElement
@XmlJavaTypeAdapter(DateAdapter.class)
Object value;
Il mosto adattatore gestisce un tipo java.lang.Object
public class DateAdapter extends XmlAdapter<String, Object> {...}
Ma io non voglio perdere la Marshaller JAXB per tutti gli altri oggetti (intero, doppio, ecc.) ...
c'è un modo per impostare un adattatore per un sottotipo specifico di un elemento?
Hai trovato qualche soluzione per questo? – nhylated
No davvero ... Ho un adattatore che gestisce la classe Object e gestisco internamente ogni sottotipo. Non è "bello", ma funziona. – ggarciao