2012-05-10 15 views
1

私のモデルのすべてのBigDecimalタイプをフォーマットするBigDecimalAdapterがあります。パッケージ情報ファイル内の宣言は次のとおりです。MOXy JAXB:異なる精度でBigDecimalAdapterを使用する方法

@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; 

は、どのように私は最終的に次の結果を得ることができます

例えば

、私は2つのオブジェクトを持っていますXML?

<invoiceTotal>10.00<invoiceTotal/> 
<discountAmount>25.0000<discountAmount/> 

つまり、第1のケースでは2小数点、第2のケースでは4小数です。

ありがとうございました。

答えて

1

それぞれBigDecimalの表現にはXmlAdapterを導入する必要があります。その後、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; 

} 
+1

ありがとう!これは本当に役に立ちます。 – rocotocloc

関連する問題