我有一个BigDecimalAdapter来格式化我模型的所有BigDecimal类型。 package-info文件中的声明是:
@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(value=BigDecimalAdapter.class,type=BigDecimal.class)})
我的问题是我必须使用不同的预测格式化几个BigDecimal。
例如,我有两个对象:
public class Invoice {
@XmlPath("InvoiceTotals/InvoiceTotal/text()")
private BigDecimal invoiceTotal;
}
和
public class Discount {
@XmlPath("DiscountAmount/text()")
private BigDecimal discountAmount;
}
现在,如果值为:
invoice.invoiceTotal = 10.000000000;
discount.discountAmount = 25.00000000;
如何在最终的XML中获得下一个结果?
<invoiceTotal>10.00<invoiceTotal/>
<discountAmount>25.0000<discountAmount/>
我的意思是,第一种情况下是2位小数,第二种情况下是4位小数。
非常感谢。
答案 0 :(得分:1)
您需要为XmlAdapter
的每个表示引入BigDecimal
。然后,您需要在属性级别注册它们,而不是在包级别注册XmlAdapter
。以下是一个例子。
<强>发票强>
public class Invoice {
@XmlPath("InvoiceTotals/InvoiceTotal/text()")
@XmlJavaTypeAdapter(value=BigDecimalTwoPlacesAdapter.class)
private BigDecimal invoiceTotal;
}
<强>折扣强>
public class Discount {
@XmlPath("DiscountAmount/text()")
@XmlJavaTypeAdapter(value=BigDecimalFourPlacesAdapter.class)
private BigDecimal discountAmount;
}