GWT Editors framework - ListEditor, удаление элементов, нарушение MVP

public class PersonListEditor extends Composite implements IsEditor<ListEditor<Person, PersonListItemWidget>> {
    private static PersonListEditorUiBinder uiBinder = GWT.create(PersonListEditorUiBinder.class);
    interface PersonListEditorUiBinder extends UiBinder<Widget, PersonListEditor> {}

    private class Source extends EditorSource<PersonListItemWidget> {
        @Override
        public PersonListItemWidget create(int index) {
            PersonListItemWidget widget = new PersonListItemWidget();
            panel.insert(widget, index);
            return widget;
        }                   
    }   

    @UiField VerticalPanel panel;
    private ListEditor<Person, PersonListItemWidget> editor = ListEditor.of(new Source());

    public PersonListEditor() {
        initWidget(uiBinder.createAndBindUi(this));
    }

    @Override
    public ListEditor<Person, PersonListItemWidget> asEditor() {
        return editor;
    }
}

PersonListItemWidget имеет кнопку Удалить, и когда эта кнопка нажата, мне нужно удалить связанный элемент из списка.

я могу сделатьPersonListEditor прослушивать уведомления виджета элемента (например, «нажата моя кнопка удаления»), но в этом случае у меня будет только ссылка на виджет, а не реальнаяPerson объект, который мне нужен на самом деле. Я также могу добавить некоторую логику, чтобы получить индекс связанного виджета из списка элементов панели, а затем получитьPerson объект по этому индексу, но это выглядит ужасно.

Я могу сделать мойPersonListItemWidget бытьValueAwareEditorпоэтому каждый виджет будет знать свойPerson, но вся идеяValueAwareEditor Похоже, нарушение MVP для меня, так как Google говорит, что слой View не должен знать о модели, и это должны быть только «кнопки» и «метки».

Какой правильный подход здесь?

Ответы на вопрос(1)

Ваш ответ на вопрос