如何将XmlAdapter全局应用于JAXB程序?

时间:2012-05-17 14:22:11

标签: java jaxb

我正在使用JAXB(通过一堆JaxWS和CXF)并尝试将BigDecimal类型编组为字符串(数字)和int(指数),因为我们现在有一个前端,由于语言环境而无法解释BigDecimal的问题。

我正在尝试使用XmlAdapter将BigDecimal转换为我自己的类型BigDecimalUnScaled。只要我将@XmlJavaTypeAdapter注释直接放在字段上,这就可以正常工作。但是,我真正想要做的是将它放在我的Web服务实现上,并将其全局应用于所有BigDecimals,而无需单独编组每个返回对象。我有什么方法可以做到这一点吗?

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

我已尝试将适配器放在实现上,但它不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

您可以在软件包级别注册XmlAdapter,并将其应用于该软件包中该类型的所有字段/属性:

<强> COM /示例/ package-info.java

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

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

了解更多信息