2012-05-17 27 views
6

我正在使用JAXB(通過一堆JaxWS和CXF)並試圖將BigDecimal類型編組爲字符串(數字)和int(指數),因爲我們現在有一個前端無法解釋BigDecimal,這要歸功於語言環境問題。如何將XmlAdapter全局應用於JAXB程序?

我想要的是使用XmlAdapter將BigDecimal轉換爲我自己的類型BigDecimalUnScaled。只要我將@XmlJavaTypeAdapter註釋直接放在字段上,這就可以正常工作。但是,我真正想要做的就是將其放在我的Web Service實現上,並將其全局應用於所有BigDecimal,而無需單獨編組每個返回對象。有什麼辦法可以做到這一點?

E.g.

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 

我試過把適配器放在實現上,但它不起作用。

任何想法?

回答

6

您可以XmlAdapter在封裝級註冊,並把它應用到所有的領域/該包內的類型的屬性:

COM /例子/ package-info.java

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

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

更多信息

+2

據我可以看到,這不會或者因爲package-info需要在模型對象文件夾中,所以它適用於我的服務的所有實例。把它放在服務包上是行不通的 - 我已經試過了。 – Andrew

相關問題