1

モデルのすべてのBigDecimalタイプをフォーマットするBigDecimalAdapterがあります。package-infoファイルの宣言は次のとおりです。

@XmlJavaTypeAdapters({@XmlJavaTypeAdapter(value=BigDecimalAdapter.class,type=BigDecimal.class)})

私の問題は、いくつかのBigDecimalを異なる精度でフォーマットする必要があることです。

たとえば、次の2つのオブジェクトがあります。

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桁、2番目のケースでは小数点以下4桁です。

どうもありがとうございます。

4

1 に答える 1

1

XmlAdapterの表現ごとに forを導入する必要があり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 に答える