GWT列表编辑器绑定


public interface Person {
    String getName();
    void setName(String name);
    List<PersonFriend> getFriends();
}
public interface PersonFriend {
    String getName();
}

我正试图实现Person的视图编辑器:

public class PersonViewEditor extends Composite implements Editor<Person> {
    private static PersonViewEditorUiBinder uiBinder = GWT.create(PersonViewEditorUiBinder.class);
    interface PersonViewEditorUiBinder extends UiBinder<Widget, PersonViewEditor> {}
    @UiField Label nameEditor;
    @UiField PersonFriendsViewEditor friendsEditor;
    @UiField FancyAnchor editAnchor;
    public PersonViewEditor(ClientFactory clientFactory) {
        initWidget(uiBinder.createAndBindUi(this));
        editAnchor.setPlace(
                clientFactory.getPlaceHistoryMapper(), 
                clientFactory.getPlaceController(), 
                new EditPersonPlace());
    }
}
public class PersonFriendsViewEditor extends Composite {
    private static PersonFriendsViewEditorUiBinder uiBinder = GWT.create(PersonFriendsViewEditorUiBinder.class);
    interface PersonFriendsViewEditorUiBinder extends UiBinder<Widget, PersonFriendsViewEditor> {}
    interface Driver extends SimpleBeanEditorDriver<List<PersonFriend>, ListEditor<PersonFriend, PersonFriendViewEditor>> {}
    private class PersonFriendViewEditorSource extends EditorSource<PersonFriendViewEditor> {
        @Override
        public PersonFriendViewEditor create(int index) {
            PersonFriendViewEditor friend = new PersonFriendViewEditor();
            containerPanel.insert(friend, index);       
            return friend;
        }       
    }
    @UiField HorizontalPanel containerPanel;
    public PersonFriendsViewEditor() {
        initWidget(uiBinder.createAndBindUi(this));     
        Driver driver = GWT.create(Driver.class);
        ListEditor<PersonFriend, PersonFriendViewEditor> editor = ListEditor.of(new PersonFriendViewEditorSource());
        driver.initialize(editor);  
    }
}

当我将Person对象绑定到PersonViewEditor时,friendsEditor从未绑定到person的好友列表。看起来PersonFriendsViewEditor应该实现一些神奇的接口来允许GWT与它交互,但是我找不到任何相关的文档。在GWT中有一个dynatablerf的例子,但是他们明确地绑定了他们的列表编辑器,我很好奇将它绑定为"外部"对象的一部分,所以我只是将Person绑定到PersonViewEditor,它有所有的数据/设置所有的小部件。

任何想法吗?

PersonFriendsViewEditor应该执行IsEditor<ListEditor<PersonFriend, PersonFriendViewEditor>> -解决了这个问题。

最新更新