Supponendo che io abbia uno schema che descrive una classe elemento radice Root
che contiene un List<Entry>
dove la classe Entry
ha un nome di campo obbligatorio.Personalizzazione della gestione degli errori di unMarshall processo JAXB
Ecco come appare nel codice:
@XmlRootElement
class Root{
@XmlElement(name="entry")
public List<Entry> entries = Lists.newArrayList();
}
@XmlRootElement
class Entry{
@XmlElement(name="name",required=true)
public String name;
}
Se fornisco il seguente codice XML per unmarshalling:
<root>
<entry>
<name>ekeren</name>
</entry>
<entry>
</entry>
</root>
ho un problema, perché la seconda voce non contiene un nome. Quindi unmarshall produce null
.
C'è un modo per personalizzare JAXB in unmarshall di un oggetto Root
che conterrà solo la voce "buona"?
è una buona idea, grazie. Ovviamente avrò bisogno di impostare eventHandler per essere tollerante per l'errore "field is required" ma non dovrebbe essere un problema. Mi chiedo se ci sia una soluzione diversa, sto cercando di rendere l'utente del mio sistema (sto scrivendo una lib per il mio gruppo che si occupa della configurazione) di essere in grado di impostare facilmente questa funzione. Posso farlo con annotazioni e qualche introspezione di classe per vedere tutti i campi che devono essere testati per il nome richiesto problema ... dentro afterUnmarshal (...). Terrò questa risposta senza risposta, forse c'è qualcuno con una risposta più adatta a ciò di cui ho bisogno. – ekeren
@ekeren vedere la mia modifica, si spera che questo aiuti. Saluti – sfussenegger