Dozer는 해당 등록 정보 접근자가 getProperty()
이 아닌 isProperty()
으로 정의 된 경우 부울 등록 정보를 매핑하지 않는 것으로 보입니다.도저 부울 등록 정보 매핑
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 (부울에 대한 "get"접근자가 아니라 "is"접근자를 생성 함)에 의해 생성되므로 접근 자의 이름을 바꿀 수 없습니다. Dozer 5.3.2를 사용하고 있습니다.
것은 당신이 JAXB로를 사용하고이 언제든지 DTO를 생성 할 수 있습니까? – artbristol
네, 접근자를 생성 할 수있는 방법이 있습니까? –
Dozer는'is' 메소드가'Boolean' 타입을 가지고있을 때만 이런 식으로 동작합니다.'boolean isFoo()'메소드를 잘 매핑합니다. –