jaxb注释用于抑制soap响应中的xmlns

时间:2013-05-08 22:14:50

标签: jaxb annotations

最初,我的POJO中的所有字段都没有注释,这些字段在Soap Response中显示为

  

<fieldName>value</fieldName>

现在我要求显示该字段,即使该值为null;然后我为这些字段添加了注释 @XmlElement(nillable = true)

现在在我的肥皂回复中,它显示为:

<fieldName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

我不想在我的soap响应中显示xsi,xmlns等;我怎么做?

在字段级别,类级别等显示jaxb中所有注释的任何链接,?

1 个答案:

答案 0 :(得分:1)

嗯,首先要注意,

<fieldName/>

<fieldName xsi:nil="true"/>

本质上是不同的。第一个将使用""填充String字段。后者将使用null填充它。

不幸的是,XmlAdapters对值为null的字段的行为取决于JAXB实现 - JDK实现根本不会调用适配器。

一个解决方案是使用@XmlAccessorType(PROPERTY)并实施getter以返回""而不是null

Eclipselink JAXB (MOXy)似乎能够处理它。

我在这里找到了类似的讨论:XmlAdapter not working as expected in JAXB RI