9

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

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

例如

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 回答