2014-01-10 80 views
1

我想编辑一个DTO,它是一个值和其他DTO的组合。对于这些subdtos我已经有一个工作的编辑器被定义为复合。该结构是这样的:GWT编辑器 - 编辑subdto与subeditor

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> { 

} 

所以,当副主编是SubDto工作编辑器,我不知道怎么说TopEditor该UiField副主编实际上编辑属性,而不是物业本身。

我到目前为止所尝试的是设置@Ignored并初始化SubEditors驱动程序与TopDto的subDto属性。但这并不像预期的那样工作。事实上,问题在于,当我在TopEditor中调用driver.flush()时,不会调用subEditor.driver.flush()。

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

有人可能会提供一个例子或帮助我建立一个如何按预期做到这一点?

回答

1

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

+0

是的,我做了,似乎我做错了,因为我在你的答案后再次尝试,现在似乎工作... –

+0

...或者你可以调用你的UiField'subDto'或'subDtoEditor'。 –