public class Model {
}
public class SuperclassDTO {
private boolean funny = true;
public boolean isFunny() {
return funny;
}
public boolean setFunny(boolean f) {
this.funny = f;
}
}
public class SubclassDTO extends SuperclassDTO {
}
new SubclassDTO().isFunny() //returns true
SubclassDTO dto = binder.bindFromBusinessObject(SubclassDTO.class, new Model());
dto.isFunny(); //returns false!!!!
这不奇怪吗?模型类没有“有趣”字段,但不知何故dto与错误的值绑定。首先我认为jDTO需要“getFunny”约定,因此它无法读取值并将其设置为“false”,但将getter名称更改为“getFunny”并不能解决问题,而且我不允许修改SuperclassDTO。如何绑定正确的值?
顺便说一下Jdto 1.4版......
答案 0 :(得分:0)
您遇到的行为是约定优于配置方法的“副作用”。除非您使用@DTOTransient
注释或XML文件上的transient
配置将它们标记为瞬态,否则将配置DTO上的所有字段。如果配置的字段在源bean上没有相应的字段,则它将使用默认值进行设置,这就是您遇到此行为的原因。
您可以选择一些方法来解决此问题:
@DTOTransient
注释添加到DTO。您还可以在github上提交有关jDTO问题跟踪器的错误报告。