#java #gwt #gwt-editors
#java #gwt #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
он никогда не привязывается к списку друзей пользователя. Похоже PersonFriendsViewEditor
, следует реализовать какой-то волшебный интерфейс, позволяющий GWT взаимодействовать с ним, но я не могу найти никаких связанных документов. В GWT есть пример dynatablerf, но они явно привязывают свой редактор списков, и мне интересно связать его как часть «внешнего» объекта, поэтому я просто привязываюсь Person
к PersonViewEditor
нему, и в нем есть все данные / наборы всех виджетов.
Есть мысли?
Ответ №1:
PersonFriendsViewEditor
должна быть реализована IsEditor<ListEditor<PersonFriend, PersonFriendViewEditor>>
— это решило проблему.
Комментарии:
1. Кроме того, PersonFriendsViewEditor. Водитель, скорее всего, все испортит.