【问题标题】:Dozer only copy if receiving bean mapped field is null推土机仅在接收 bean 映射字段为空时复制
【发布时间】:2012-08-02 18:29:49
【问题描述】:

如果 bean b 中的字段为空,我如何配置 Dozer,以便它只将 bean a 中的一个字段的值复制到 bean b 中的一个字段?我正在使用 dsl 配置

mapping(FirstGivingPayloadV1.Payload.class, Nonprofit.class, oneWay(),
        mapNull(false), mapId("firstGivingPayloadV1"))
        .fields("latitude", "latitude")
        .fields("longitude", "longitude")
        .fields("revoked", "isNonProfitStatusVerified");
        .fields("url", "websiteUrl"); // only copy url if webSiteURL == null or is empty

【问题讨论】:

    标签: java javabeans dozer


    【解决方案1】:

    为此字段转换编写一个自定义转换器。自定义转换器应检查 bean b 中的字段是否为空,以及是否将字段 a 复制到它。

    来自推土机文档:

    在下面的示例中,Dozer 将调用自定义转换器来执行字段映射。

    <mapping>
      <class-a>org.dozer.vo.SimpleObj</class-a>
      <class-b>org.dozer.vo.SimpleObjPrime2</class-b>    
      <field custom-converter-id="CustomConverterWithId">
        <a>field1</a>
        <b>field1Prime</b>
      </field>
    </mapping>  
    

    在自定义转换器中,您可以访问目标对象,您可以检查它是否为空,查看convert 方法签名:

    public class TestCustomConverter implements CustomConverter {
     public Object convert(Object destination, Object source, Class destClass, Class sourceClass) {...
    

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多