Mapping 推土机使用空字符串初始化属性

Mapping 推土机使用空字符串初始化属性,mapping,dozer,Mapping,Dozer,我需要用Dozer初始化目标obect上的字符串属性,该属性为空字符串 想象一下这些物体: SRC public class Container { private String animalName; .... DEST public class Animal { private String name; private String type; 我需要从容器到动物进行初始化,并将type属性设置为“”且不为null: 我找到的唯一方法是编写自定义

我需要用Dozer初始化目标obect上的字符串属性,该属性为空字符串

想象一下这些物体:

SRC
public class Container {
            private String animalName;  
....
DEST
public class Animal {
    private String name;
    private String type;
我需要从容器到动物进行初始化,并将type属性设置为“”且不为null:

我找到的唯一方法是编写自定义转换器,如下所示:

public class InitializeStringConverter extends DozerConverter<Container, String>{

    public InitializeStringConverter() {
        super(Container.class, String.class);
    }

    @Override
    public Container convertFrom(String arg0, Container arg1) {
        return null;
    }

    @Override
    public String convertTo(Container arg0, String arg1) {
        return "";
    }
}
公共类InitializeStringConverter扩展DozerConverter{
公共初始值estringconverter(){
super(Container.class、String.class);
}
@凌驾
公共容器convertFrom(字符串arg0,容器arg1){
返回null;
}
@凌驾
公共字符串转换器(容器arg0,字符串arg1){
返回“”;
}
}
并具有以下映射:

<mapping>
        <class-a>it.alten.sample.mapping.Container</class-a>
        <class-b>it.alten.sample.mapping.Animal</class-b>
        <field custom-converter="it.alten.sample.mapping.converter.InitializeStringConverter">
            <a>this</a>
            <b>type</b>
        </field>
        <!-- 
        <field>
            <a>animalName</a>
            <b>name</b>
        </field>
         -->
        <field>
            <a>animalType</a>
            <b>type</b>
        </field>
    </mapping>

it.alten.sample.mapping.Container
it.alten.sample.mapping.Animal
这
类型
动物型
类型
有没有更简洁的方法来完成这项任务

问候
Massimo

Dozer复制和转换值,它不应该像我认为的那样以自定义方式初始化字段

我对您问题的解决方案:

  • 为类或字段启用空映射-
  • 创建setter,其中init字段的值为空而不是null,如:

    void setType(字符串类型){this.type=(type!=null?type:);}

  • 我认为,它是解决您的问题的更清晰的解决方案,因为空控制是setter的功能,而且它是正确的