Редактор GWT ValueListBox

#gwt #gwt-widgets #gwt-editors

#gwt #gwt-виджеты #gwt-редакторы

Вопрос:

Я озадачен тем, как использовать ValueListBox GWT с редактором. Я получаю эту ОШИБКУ:

 The method setValue(String) in the type TakesValueEditor<String> 
is not applicable for the arguments (List<String>)
  

Вот соответствующий код.

 public class MyBean {
    private List<String> dateFormats;
    public List<String> getDateFormats() {
        return dateFormats;
    }
    public void setDateFormats(List<String> dateFormats) {
        this.dateFormats = dateFormats;
    }
}

public interface MyBeanView extends IsWidget, Editor<MyBean> {
    @Path("dateFormats")
    IsEditor<TakesValueEditor<String>> getDateFormatEditor();
}

public class MyBeanViewImpl implements MyBeanView {
    @UiField(provided=true) ValueListBox<String> dateFormats;

    public MyBeanViewImpl() {
        dateFormats = new ValueListBox<String>(PassthroughRenderer.instance(),
                new ProvidesKey<String>() {
                    @Override
                    public Object getKey(String item) {
                        return item;
                    }
        });
        dateFormats.setAcceptableValues(Arrays.asList(new String[] {"YYYY"}));
        // ... binder.createAndBindUi(this);
    }

    @Override
    public IsEditor<TakesValueEditor<String>> getDateFormatEditor() {
        return dateFormats;
    }
}
  

Вот что находится в ui.xml с помощью xmlns:g=’urn:импорт:com.google.gwt.user.client.ui’>

   <g:HTMLPanel>
     Data Formats: <g:ValueListBox ui:field="dateFormats"> </g:ValueListBox>
  </g:HTMLPanel>
  

Я, конечно, упускаю здесь что-то очевидное. Большое спасибо.

Ответ №1:

Проблема, с которой вы столкнулись, связана с попыткой отобразить List<String> dateFormats из MyBean в ValueListBox<String> dateFormats редактор. Типы данных несовместимы, поскольку a ValueListBox<T> редактирует не a List<T> , а вместо этого один экземпляр, T выбранный из списка, предоставленного setAcceptableValues() . Учитывая приведенный выше пример, было бы разумно MyBean создать String getDateFormat() свойство и переименовать поле редактора в dateFormat .

Комментарии:

1. Спасибо, BobV, за выполнение утомительной, но необходимой работы по указанию на то, что очевидно в ретроспективе.

2. MyBean Должно ли быть только одно поле String dateFormat ? И в редакторе есть только одно поле ValueListBox<String> dateFormat . Мне будет приятно увидеть код после исправления.. Спасибо!