2

我对如何将 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:g='urn:import:com.google.gwt.user.client.ui'> 的 ui.xml 中的内容

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

我肯定在这里遗漏了一些明显的东西。非常感谢。

4

1 回答 1

3

您遇到的问题与尝试将List<String> dateFormatsfrom映射MyBeanValueListBox<String> dateFormats编辑器有关。数据类型不兼容,因为 aValueListBox<T>不编辑 a List<T>,而是T从 提供的列表中选择的单个实例setAcceptableValues()。鉴于上面的示例,MyBean拥有一个String getDateFormat()属性并将编辑器字段重命名为dateFormat.

于 2011-05-03T18:26:52.170 回答