Похоже, что Dozer не будет отображать логическое свойство, если метод доступа этого свойства определен как isProperty ()
, а не getProperty ()
.
Следующий отличный сценарий иллюстрирует проблему:
import org.dozer.*
class ProductCommand {
Boolean foo
}
public class ProductDto {
private Boolean foo;
public Boolean isFoo() { this.foo }
public void setFoo(Boolean p0) { this.foo = p0 }
}
def mapper = new DozerBeanMapper()
dto = new ProductDto(foo: true)
assert dto.isFoo()
ProductCommand mappedCmd = mapper.map(dto, ProductCommand)
assert mappedCmd.foo
Утверждение в последней строке не выполняется. Однако, если я переименую ProductDto.isFoo ()
в ProductDto.getFoo ()
, он пройдет.
Есть ли флаг / параметр, который я могу установить в файле сопоставления Dozer, который будет указывать ему использовать метод доступа is
или get
для логических свойств? В качестве альтернативы я мог бы добавить собственное правило для каждого логического свойства, но это не очень привлекательно.
Хотя приведенный выше пример написан на Groovy, у меня нет оснований полагать, что такое же поведение не будет продемонстрировано эквивалентным Код Java.
Эти DTO генерируются JAXB (который генерирует метод доступа «is», а не метод доступа «get» для логических значений), поэтому я не могу переименовать методы доступа. Я использую Dozer 5.3.2.