我想编辑一个DTO,它由值和其他DTO组成。对于其中一些subdto,我已经有一个工作正常的Editor,它被定义为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子编辑器实际上是在编辑属性,而不是属性本身。

我到目前为止尝试过的是使用TopDto的subDto属性设置@Ignored并初始化subEditors驱动程序。但这不能按预期工作。实际上,问题是当我在TopEditor中调用driver.flush()时,它不会下降到调用subEditor.driver.flush()。

由于驱动程序是私有的(或受保护的),因此我无法显式调用SubEditor的driver.flush()并手动在TopDto中更改SubDto。因此,我现在要做的是为SubEditor提供一个公共的getSubDto()方法,该方法为我提供了Dto,然后手动将其插入。
但是据我从备用文档中了解到,这不是预期的工作流程,所以我在这里做错了。

有人可以为我提供一个示例,还是可以帮助我构建一个按预期方式执行此操作的示例?

最佳答案

您是否尝试过使用@Path注释将Editors映射到bean属性?

10-06 02:00