1

我有一个 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 个小数。

非常感谢你。

4

1 回答 1

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;

}
于 2012-05-10T09:59:34.370 回答