GWT ValueListBox Editor - PullRequest
       20

GWT ValueListBox Editor

2 голосов
/ 03 мая 2011

Я озадачен тем, как использовать 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: import: com.google.gwt.user.client.ui'>

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

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

1 Ответ

3 голосов
/ 03 мая 2011

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

...