2015-02-27 2 views
1

Я хочу скопировать данные с карты (request.getParameterMap()) в java bean. Например:Исключение использования бульдозера для копирования данных с карты на java bean

Map<String,Object> map = new HashMap<>(); 
map.put("payment_code", "1420956468542a2"); 
//... 


public class PaymentLogDTO { 
    @Mapping("payment_code") 
    private String paymentCode; 
    //... 
} 

, но когда я исполню метод карты в тестовом модуле,

DozerBeanMapper dozer = new DozerBeanMapper(); 
dozer.map(map, PaymentLogDTO.class); 

это не удалось. Сообщение об исключении:

org.dozer.MappingException: No such field found java.util.HashMap.payment_code 
at org.dozer.util.ReflectionUtils.getFieldFromBean(ReflectionUtils.java:322) 
at org.dozer.util.ReflectionUtils.getFieldFromBean(ReflectionUtils.java:320) 
at org.dozer.util.ReflectionUtils.getFieldFromBean(ReflectionUtils.java:320) 
at org.dozer.util.ReflectionUtils.getFieldFromBean(ReflectionUtils.java:309) 
at org.dozer.propertydescriptor.FieldPropertyDescriptor$ChainedPropertyDescriptor.<init>(FieldPropertyDescriptor.java:104) 
at org.dozer.propertydescriptor.FieldPropertyDescriptor.<init>(FieldPropertyDescriptor.java:51) 
at org.dozer.propertydescriptor.PropertyDescriptorFactory.getPropertyDescriptor(PropertyDescriptorFactory.java:64) 
at org.dozer.fieldmap.FieldMap.getSrcPropertyDescriptor(FieldMap.java:385) 
at org.dozer.fieldmap.FieldMap.getSrcFieldValue(FieldMap.java:86) 
at org.dozer.MappingProcessor.mapField(MappingProcessor.java:294) 
at org.dozer.MappingProcessor.map(MappingProcessor.java:267) 
at org.dozer.MappingProcessor.mapToDestObject(MappingProcessor.java:216) 
at org.dozer.MappingProcessor.createByCreationDirectiveAndMap(MappingProcessor.java:196) 
at org.dozer.MappingProcessor.mapGeneral(MappingProcessor.java:170) 
at org.dozer.MappingProcessor.map(MappingProcessor.java:104) 
at org.dozer.MappingProcessor.map(MappingProcessor.java:99) 
at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:120) 
at org.springside.modules.mapper.BeanMapper.map(BeanMapper.java:36) 

Есть ли способ решить эту проблему? То есть мне не нужно создавать java bean, используя то же имя имени параметра запроса, что и имена свойств.

ответ

0

@Mapping annotation говорит источник/назначение поле, он не имеет ничего, связанного с классом карты ...

Так с @Mapping («payment_code»), он выглядит для поля «payement_code» , а не для элемента в вашей коллекции карт.