Je crée un service web en Java qui sera consommé par une application externe, probablement écrite en C#. Dans mon bean d'achat, j'ai un objet de devise pour le coût total. Cependant, cela conduit à l'erreur suivante:Quel type Java utiliser pour représenter une valeur monétaire dans un service Web?
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.Currency does not have a no-arg default constructor.
J'ai trouvé a solution pour créer un adaptateur XML personnalisé pour gérer le rassemblement des devises/unmarshalling:
public class CurrencyAdapter extends XmlAdapter<String,Currency> {
public Currency unmarshal(String val) throws Exception {
return Currency.getInstance(val);
}
public String marshal(Currency val) throws Exception {
return val.toString();
}
}
pourrais-je utiliser cet adaptateur XML personnalisé, ou l'utilisation un objet BigDecimal (ou autre type) pour représenter le coût?
'XmlAdapter' est l'approche correcte, c'est ce qu'il est là pour. – skaffman
Devrais-je le marshal en tant que chaîne comme dans l'exemple ci-dessus? –
Que se passe-t-il lorsque vous * essayez *? –