#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
. Мне будет приятно увидеть код после исправления.. Спасибо!