2009-09-29 6 views
1

J'ai un JavaBean de base dans ma couche de service et à l'origine il n'était pas conçu pour le marshalling. Cet objet est utilisé à la fois par JAX-WS, JAX-RS et Servlets dans d'autres couches de mon application. Je veux profiter d'un effet de type "drill down" dans mes services REST donc ma question est: Comment faire pour que l'un des champs/propriétés du javabean apparaisse dans le xml comme un lien HTML? Évidemment, j'ai besoin d'utiliser CData. Je ne peux pas modifier le javabean original en ajoutant des champs, etc. Y at-il une annotation que je peux utiliser?JAXB - Ajouter un nœud au XML en tant que lien html

Si j'ai dans ma classe:

... 
String data; 
... 

comment puis-je faire que (en XML):

<data><![CDATA[<a href="somearbitrarylink">ValueOfData</a>]]></data> 

est-ce possible avec JAXB et annotations? Peut-être que xlink?

Répondre

2

Je suggère d'utiliser un adaptateur de type. Ils sont généralement utilisés pour adapter les valeurs de chaîne XML en valeurs plus fortement typées, telles que les horodatages, mais vous pouvez également les utiliser pour adapter les chaînes aux chaînes.

D'abord, créez une sous-classe de javax.xml.bind.annotation.adapters.XmlAdapter. Cette classe devra implémenter marshal et unmarshal, convertissant vers et à partir de la valeur de votre champ, et le fragment HTML dans le XML.

Une fois que vous avez, vous pouvez annoter votre champ avec

@XmlJavaTypeAdapter(MyAdapter.class) 

Et cela devrait l'être.

Questions connexes