Dón*_*nal 11 java groovy dozer
如果该属性的访问者被定义为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
Run Code Online (Sandbox Code Playgroud)
最后一行的断言失败了.不过,如果我重新命名ProductDto.isFoo()
,以ProductDto.getFoo()
它传递.
是否有我可以在Dozer映射文件中设置的标志/选项,它将指示它使用布尔属性的访问器is
或get
访问器?或者,我可以为每个布尔属性添加自定义规则,但这不是很吸引人.
虽然上面的例子是用Groovy编写的,但我没有理由相信相同的Java代码不会表现出同样的行为.
这些DTO由JAXB生成(它生成"is"访问器,而不是booleans的"get"访问器),因此我无法重命名访问器.我正在使用Dozer 5.3.2.
可能是您可以使用自定义getter方法来使用它.
这里是示例映射(在dozer-mapping文件中写入)
<mapping>
<class-a>ProductDto</class-a>
<class-b>ProductCommand</class-b>
<field>
<a get-method="isFoo">foo</a>
<b>foo</b>
</field>
</mapping>
Run Code Online (Sandbox Code Playgroud)
所以现在dozer将使用isFoo而不是预定义的getFoo.希望这对你有用.:)
为布尔包装类生成"is"方法是JAXB中的错误,有关详细信息,请参阅Java Bean,BeanUtils和布尔包装类以及http://java.net/jira/browse/JAXB-131.似乎在jaxb 2.1.13中修复
归档时间: |
|
查看次数: |
12061 次 |
最近记录: |