【发布时间】:2014-01-10 14:35:41
【问题描述】:
我想编辑由值和其他 DTO 组成的 DTO。对于其中一些 subdtos,我已经有一个工作编辑器,它被定义为 Composite。结构是这样的:
public class TopDto {
private SubDto subDto;
public SubDto getSubDto();
public void setSubDto(...);
}
public class TopEditor extends Composite implements Editor<TopDto> {
@UiField
SubEditor subEditor;
}
public class SubEditor extends Composite implements Editor<SubDto> {
}
因此,虽然 SubEditor 是 SubDto 的工作编辑器,但我不知道如何说 TopEditor UiField subEditor 实际上是在编辑属性,而不是属性本身。
到目前为止,我尝试的是设置 @Ignored 并使用 TopDto 的 subDto 属性初始化 subEditors 驱动程序。但这并没有按预期工作。事实上,问题是当我在 TopEditor 中调用 driver.flush() 时,它不会向下调用 subEditor.driver.flush()。
由于驱动程序是私有的(或受保护的),我无法显式调用 SubEditor 的 driver.flush() 并以此手动更改 TopDto 中的 SubDto。所以我现在做的就是给 SubEditor 一个公共的 getSubDto() 方法,它给了我 Dto,然后手动插入它。 但根据我从备用文档中了解到的情况,这不是预期的工作流程,所以我在这里做错了。
有人可以为我提供一个示例或帮助我构建一个如何按预期执行此操作的示例吗?
【问题讨论】: