我正在使用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
我已尝试将适配器放在实现上,但它不起作用。
有什么想法吗?
答案 0 :(得分:6)
您可以在软件包级别注册XmlAdapter
,并将其应用于该软件包中该类型的所有字段/属性:
<强> COM /示例/ package-info.java 强>
@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(value=BigDecimalAdapter.class, type=BigDecimal.class)
})
package com.example;
import javax.xml.bind.annotation.adapters.*;
了解更多信息