Константы в отображениях dozer - PullRequest
6 голосов
/ 13 мая 2009

Кто-нибудь знает, как поместить постоянное значение в атрибут с помощью dozer? Я не видел ничего об этом в документации бульдозера

Ответы [ 5 ]

3 голосов
/ 13 мая 2009

Не совсем уверен, что вы имеете в виду - если вы хотите, чтобы Dozer всегда заполнял BeanB.someField константой при каждом преобразовании из BeanA в BeanB?

Возможно, вы захотите зарегистрировать пользовательский конвертер для этого сопоставления.

2 голосов
/ 18 июня 2009

Как насчет использования механизма событий?

Таким образом, вы можете зарегистрировать слушателя, который будет устанавливать значение в mappingFinished() вашего слушателя. Проконсультируйтесь с dozer doc о событиях . Конечно, вам придется защищать код настройки с каким-то условием if ... instanceof.

1 голос
/ 04 февраля 2010

Последние сборки dozer делают это проще. Вы можете указать оба пользовательских конвертера и , вы можете указать параметры этого конвертера для данного отображения поля. Должно быть тривиально создать единственный ConstantConverter, который будет принимать входной параметр и помещать его в выходное поле 100% времени.

0 голосов
/ 16 октября 2014

Одна из возможных реализаций:

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.

0 голосов
/ 30 июня 2011

Это довольно просто с ModelMapper :

ModelMapper modelMapper = new ModelMapper();

modelMapper.addMappings(new PropertyMap<SourceClass, DestClass>() {
  protected void configure() {
    map().setSomeProperty(someConstant);
  }
});

Этот пример отображает someConstant в DestClass.someProperty.

Вы можете ознакомиться с другими примерами и документами по адресу: http://modelmapper.org

...