isProperty()
プロパティのアクセサがではなくとして定義されている場合、Dozer はブール プロパティをマップしないようですgetProperty()
。
次の groovy スクリプトは、この問題を示しています。
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 を使用しています。