【问题标题】:GWT List editor bindingGWT 列表编辑器绑定
【发布时间】:2011-10-22 12:07:23
【问题描述】:
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 永远不会绑定到某人的朋友列表。看起来PersonFriendsViewEditor 应该实现一些魔术接口以允许 GWT 与之交互,但我找不到任何相关文档。 GWT 中有 dynatablerf 示例,但它们显式绑定了列表编辑器,我很好奇将其绑定为“外部”对象的一部分,所以我只是将 Person 绑定到 PersonViewEditor,它拥有所有数据/集小部件。

有什么想法吗?

【问题讨论】:

    标签: java gwt gwt-editors


    【解决方案1】:

    PersonFriendsViewEditor 应该实现 IsEditor&lt;ListEditor&lt;PersonFriend, PersonFriendViewEditor&gt;&gt; - 这解决了问题。

    【讨论】:

    • 另外,PersonFriendsViewEditor.Driver 可能会搞砸。
    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多