【问题标题】:Dozer Boolean Mapping - Boolean Values推土机布尔映射 - 布尔值
【发布时间】:2016-01-15 16:05:50
【问题描述】:

我正在公开一个使用另一个 SOAP 服务的服务。我得到了一个 JAXB 生成的服务模型。当我使用服务时,数据被设置到与该模型相关的对象中。我已经定义了自己的域模型,它具有与 JAXB 模型完全相同的类集,但没有 xml 注释等。我正在使用推土机来执行数据映射。当某些标有注释 (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

【问题讨论】:

    标签: java jaxb spring-boot jackson dozer


    【解决方案1】:

    这是因为 JAXB 为布尔(对象)属性生成带有“is”前缀的方法,但 Dozer 对原始布尔类型使用“is”前缀。 “Is-accessible”推土机映射配置属性应该可以解决问题。但似乎由于某种原因它没有。你可以试试:

    通过删除“is”前缀重命名域模型中的属性

    将域模型中的 getter 和 setter 重命名为 get/set

    使用“get-method”Dozer映射配置属性来定义JAXB模型的get方法

    使用 XJC 插件修复 JAXB 模型中的 get 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2021-12-14
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多