@Santosh Grazie! XMLAdapter era quello di cui avevo bisogno. Inoltre, come ho detto nella mia domanda, ho generato classi client con Apache CXF. In questo tipo di problema ho dovuto aggiungere il seguente codice a bindings.xjb (file di binding che è usato per cxf-codegen-plugin in Maven).
<jaxb:javaType name="java.math.BigDecimal" xmlType="xs:decimal"
parseMethod="sample.BigDecimalFormater.parseBigDecimal"
printMethod="sample.BigDecimalFormater.printBigDecimal" />
Questo è il mio in codice:
public class BigDecimalFormater {
public static String printBigDecimal(BigDecimal value) {
value.setScale(5);
return value.toPlainString();
}
public static BigDecimal parseBigDecimal(String value) {
return new BigDecimal(value);
}
}
Poi questo plugin generare Adattatore per me
public class Adapter1 extends XmlAdapter<String, BigDecimal> {
public BigDecimal unmarshal(String value) {
return (sample.BigDecimalFormater.parseBigDecimal(value));
}
public String marshal(BigDecimal value) {
return (sample.BigDecimalFormater.printBigDecimal(value));
}
}
Nel campo BigDecimal classe generata ha ottenuto l'annotazione @XmlJavaTypeAdapter (adapter1 .class), e ha risolto il problema.
fonte
2013-11-21 11:44:41
Quale legame (ad es. Jaxb ecc.) State usando? – Santosh
Uso jaxb per il collegamento xml. E questo campo ha annotazioni: @XmlElement (name = "NetPrice", required = true) protetto BigDecimal netPrice; –