我对如何将GWT的ValueListBox与编辑器一起使用感到困惑。我收到了这个错误:
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;
}
}
以下是带有xmlns的ui.xml中的内容:g ='urn:import:com.google.gwt.user.client.ui'&gt;
<g:HTMLPanel>
Data Formats: <g:ValueListBox ui:field="dateFormats"> </g:ValueListBox>
</g:HTMLPanel>
我肯定在这里遗漏了一些明显的东西。非常感谢。
答案 0 :(得分:3)
您遇到的问题与尝试将List<String> dateFormats
从MyBean
映射到ValueListBox<String> dateFormats
编辑器有关。数据类型不兼容,因为ValueListBox<T>
不会编辑List<T>
,而是从T
提供的列表中选择setAcceptableValues()
的单个实例。鉴于上面的示例,MyBean
具有String getDateFormat()
属性并将编辑器字段重命名为dateFormat
是有意义的。