2010-08-25 45 views
1

Est-il possible de sérialiser en option les propriétés d'une classe via JAX-B en utilisant un indicateur dynamique?Pouvez-vous sérialiser en option une propriété de classe via JAXB?

par exemple. Supposons que j'ai

@XmlRootElement 
public class TodoItem { 
private int id; 
private String title; 
private String note; 

// getters, setters 

} 

et les operatios de services Web suivants:

public TodoItem getTodoItemFull(int id) { .... } 
public TodoItem getTodoItemMinimal(int id) { .... } 

Y at-il une annotation spéciale que je peux utiliser pour que je puisse décider à l'exécution si la propriété « note » sera publié en feuilleton? En d'autres termes, la méthode getTodoItemFull() retournera la classe entièrement sérialisée, tandis que la méthode getTodoItemMinimal() retournera cette classe sérialisée sans l'élément xml "note".

Merci ,!

Répondre

1

Vous pouvez le faire en appliquant plusieurs mappages à votre modèle d'objet. La norme JAXB vous permet uniquement d'appliquer un mappage par le biais d'annotations. D'autres implémentations JAXB telles que Moxy (je mène cette mise en œuvre), vous permettent également de représenter les métadonnées au format XML:

Vous pourriez avoir un JAXBContext construit sur un ensemble de métadonnées entièrement cartographié la modèle d'objet que le "getTodoItemFull" utiliserait, et un autre JAXBContext construit sur un autre ensemble de métadonnées qui maquaient partiellement le modèle objet que getTodoItemMininmal utiliserait.