ドーザーで定数値を属性に入れる方法を知っている人はいますか? ドーザーのドキュメントでそれについて何も見たことがありません
6 に答える
あなたが何を意味するのか完全にはわかりません - BeanA から BeanB にマップするたびに Dozer に常に BeanB.someField に定数を入力させたい場合は?
このマッピングのカスタム コンバーターを登録することができます。
イベントメカニズムを利用してみませんか?
したがって、リスナーの値の設定を行うリスナーを登録できmappingFinished()
ます。詳細については、イベントに関するドーザーのドキュメントを参照してください。もちろん、何らかのif ... instanceof
条件で設定コードを保護する必要があります。
最近のブルドーザーのビルドはこれを容易にします。両方のカスタムコンバーターを指定でき、特定のフィールドマッピングのそのコンバーターにパラメーターを指定できます。入力パラメータを受け取り、それを100%の時間出力フィールドに入れる単一の「ConstantConverter」を作成するのは簡単なはずです。
1 つの可能な実装は次のとおりです。
public class ConstantsCustomConvertor implements ConfigurableCustomConverter{
private String pararamter;
@Override
public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass, Class<?> sourceClass) {
return pararamter;
}
@Override
public void setParameter(String parameter) {
this.pararamter = parameter;
}
}
例:
<field custom-converter-param="CONTANT_VALUE" custom-converter="org.yourcompany.ConstantsCustomConvertor">
<a>a-class-dummyfieldname</a>
<b>b-class-fieldname</b>
</field>
このカスタム コンバーターは、b-class-fieldname が String 型であると想定しています。
これはModelMapperで非常に簡単です:
ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<SourceClass, DestClass>() {
protected void configure() {
map().setSomeProperty(someConstant);
}
});
この例はにマップsomeConstant
されDestClass.someProperty
ます。