Использование среды редактора GWT с CellList

Я хочу использовать структуру редактора GWT с CellList. Моя модель данных выглядит так:

public class CarDto {
   private String name;
   private List<String> features;
   // getter and setter
}

Использование GWTP здесь является частью моего презентатора:

public class Presenter {

  public interface MyView extends View, Editor<CarDto> {
  }

  private final SimpleBeanEditorDriver<CarDto, ?> editorDriver;

  public Presenter(...) {
      editorDriver = getView().createEditorDriver();
  } 
  ...

  @Override
  public void saveButtonClicked() { 
    CarDto carDto = editorDriver.flush();
    int size = carDto.getFeatures().size();  // result is 0
  }

}

Мой класс просмотра:

public class CarView implements Presenter.MyView {

   public interface EditorDriver extends SimpleBeanEditorDriver<CarDto, CarView> {   
   }


   @Path(value="name")
   @UiField
   TextBox nameInput;   // editor works fine with this

   @Path(value="features")   // this editor is not working !!!
   ListEditor<String, LeafValueEditor<String>> featuresEditor;

   @UiField
   CellList<String> cellList;  
   ListDataProvider<String> dataProvider;

   public CarView() {
     dataProvider = new ListDataProvider<String>();
     dataProvider.addDataDisplay(cellList);
     featuresEditor = HasDataEditor.of(cellList);
   }


   // create the editor driver
   @Override
   public SimpleBeanEditorDriver<CarDto, ?> createEditorDriver() {
     EditorDriver driver = GWT.create(EditorDriver.class);
     driver.initialize(this);
     return driver;
   }


  @UiHandler("save")
  protected void saveClicked(ClickEvent e) {
    List<String> dtos = dataProvider.getList();
    dtos.add("test");
    getUiHandlers().saveButtonClicked();
  }
}

Когда я нажимаю кнопку «Сохранить» и делаю editorDriver.flush() в своем презентере, я получаю только свойство name из представления CarDto. Список возможностей всегда пуст.

Мне нужно изменить значение featuresEditor вручную следующим образом:

featuresEditor.getList().add(...);

чтобы получить изменение в списке после того, как я его сбросил. Это означало бы, что я должен установить два списка для хранения данных:

featuresEditor.getList().add(...);
dataProvider.getList().add(...);

это не кажется правильным.

Как добиться правильного обновления ListEditor при изменении списка dataProvider? Как правильно настроить редактор для работы с List<String>, который обрабатывается CellList?


person confile    schedule 29.01.2016    source источник
comment
дубликат? stackoverflow.com/questions/13748586/   -  person hahn    schedule 09.02.2016
comment
Из того, что я слышал, виджеты ячеек плохо сочетаются с фреймворком редактора, но я полагаю, вам нужен HasDataEditor, не так ли?   -  person slugmandrew    schedule 09.02.2016
comment
Попробуйте изменить ListEditor<String, LeafValueEditor<String>> на HasDataEditor<String>?   -  person slugmandrew    schedule 09.02.2016