1

Bean bのフィールドがnullの場合に、Beanaの1つのフィールドからBeanbのフィールドにのみ値をコピーするようにDozerを構成するにはどうすればよいですか?私は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
4

1 に答える 1

2

このフィールド変換用のカスタムコンバーターを作成します。カスタムコンバーターは、Beanのフィールドbがnullであるかどうか、およびそれがフィールドにコピーされているかどうかを確認する必要がありますa

Dozerのドキュメントから:

以下の例では、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>  

カスタムコンバーターでは、宛先オブジェクトにアクセスでき、それがnullかどうかを確認できます。convertメソッドのシグネチャを確認してください。

public class TestCustomConverter implements CustomConverter {
 public Object convert(Object destination, Object source, Class destClass, Class sourceClass) {...
于 2012-08-03T09:40:54.947 に答える