9

私は JAXB を (JaxWS と CXF の混乱を介して) 使用し、BigDecimal 型を文字列 (数値) と int (指数) にマーシャリングしようとしています。これは、ロケールの問題により BigDecimal を解釈できないフロント エンドがあるためです。

私がしようとしているのは、XmlAdapter を使用して BigDecimal を独自の型 BigDecimalUnScaled に変換することです。@XmlJavaTypeAdapter アノテーションをフィールドに直接配置する限り、これは正常に機能します。しかし、私が本当にやりたいことは、それを Web サービスの実装に配置し、各戻りオブジェクトを個別にマーシャリングすることなく、すべての BigDecimals にグローバルに適用することです。これを行う方法はありますか?

例えば

Interface DummyWebService
-- Get Return Object (Return object is a POJO with say an ID and a BigDecimal value)

Implementation default
-- No type annotation, uses default BigDecimal marshaller

Marshalled Implementation
-- XmlTypeAdapters implementation, should globally use BigDecimal

アダプターを実装に入れてみただけですが、うまくいきません。

何か案は?

4

1 に答える 1

7

XmlAdapterパッケージレベルで登録して、そのパッケージ内のそのタイプのすべてのフィールド/プロパティに適用することができます。

com / example / package-info.java

@XmlJavaTypeAdapters({
    @XmlJavaTypeAdapter(value=BigDecimalAdapter.class, type=BigDecimal.class)
})
package com.example;

import javax.xml.bind.annotation.adapters.*; 

詳細については

于 2012-05-17T14:52:37.217 に答える