У меня есть приложение GWT 2.4, использующее MVP, clientFactory, действия, места и uiBinder.У меня есть составной виджет, который я создал как отдельный объект с собственным файлом ui.xml.Я ссылаюсь на этот класс и вставляю его в основной файл viewImpl.ui.xml.
Составной виджет получает некоторые данные из бэкэнда, и мне нужно вернуть их в действие, чтобы они могли отображаться в таблице.Я использую докладчик, связанный с представлением, чтобы перейти к действию.Вот код: В интерфейсе View:
public interface NameView extends IsWidget
{
void setPresenter(Presenter presenter);
...
public interface Presenter{
void goTo(Place place);
void setRowDataList(List<Data> rowData);
}
В своем Activity я реализую View.Presenter следующим образом:
Activity extends AbstractActivity implements NameView.Presenter
, так что активность - это нужный мне ведущий изнутримой автономный виджет и в методе запуска для действия, которое я использую:
NameView nameView = clientFactory.getNameView();//NameView is just an example.
nameView.setPresenter(this); ...
, чтобы настроить докладчика и создать его экземпляр.Моя проблема в виджете мне нужно это:
presenter.setRowDataList(rowData);
но я не уверен, как ссылаться на экземпляр Presenter из виджета?
Этот отдельный виджет, фактически виджет gwtUpload, является автономным.Я выполняю вычисления на стороне сервера для некоторых загруженных данных, и это то, что возвращается обратно в этот виджет.
Данные виджета должны возвращаться в Activity для передачи этих данных обратнокласс NameViewImpl.
Я думал, что презентатор был правильным способом сделать это, но, поскольку виджет не подключен к представлению или представлению. Мне нужен способ получить этого презентатора для виджета.
IЯ знаю, что GIN сделает это с DI или, может быть, я создам другого докладчика.Я никогда не настраивал GIN с GWT.Любые идеи относительно правильного способа сделать это?
Рабочая реализация:
Я не знаю, является ли это лучшей реализацией или нет, но на основеответ от Томаса, я установил свой виджет с экземпляром Presenter (активность) в методе setPresenter () в классе ViewImpl.Это работает как проход для виджета, чтобы возвратиться к действию.Я предполагаю, что Томас имел в виду интерфейс обратного вызова.