我正在公开一个使用另一个SOAP服务的服务。我获得了JAXB生成的服务模型。当我使用服务时,数据被设置到与该模型相关的对象中。我已经定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当一些标注有注释(nillable = true)的布尔元素为null时,我的域模型中的目标对象Boolean对象将设置为默认的true或false值。我希望它保留相同的空值。下面列出了布尔变量的映射和定义。
<mapping>
<class-a>com.customer.types.CustomerPreferences
</class-a>
<class-b>com.customer.types.xml.CustomerPreferences
</class-b>
<field>
<a is-accessible="true">isRequired</a>
<b is-accessible="true">isRequired</b>
</field>
</mapping>
JAXB模型
@javax.xml.bind.annotation.XmlElement(nillable=true)
protected java.lang.Boolean isRequired;
// getters and setters
域模型
private Boolean isRequired;
//getters and setters
答案 0 :(得分:1)
这是因为JAXB使用&#34; is&#34;生成方法。布尔(对象)属性的前缀,但是Dozer使用&#34;是&#34;原始布尔类型的前缀。 &#34;是可访问的&#34;推土机映射配置属性应解决问题。但似乎由于某种原因它没有。你可以尝试:
通过删除&#34;来重命名域模型中的属性&#34;前缀
将域模型中的getter和setter重命名为get / set
使用&#34; get-method&#34; Dozer映射配置属性定义JAXB模型的get方法
使用XJC插件修复JAXB模型中的get方法