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> dateFormats発生している問題は、 fromMyBeanValueListBox<String> dateFormatsエディターにマップしようとすることと関係があります。ValueListBox<T>はを編集しないため、データ型には互換性がありませんList<T>が、代わりに、Tによって提供されるリストから選択された単一のインスタンスが編集されsetAcceptableValues()ます。上記の例でMyBeanは、String getDateFormat()プロパティを設定し、エディターフィールドの名前をに変更するのが理にかなっていますdateFormat

于 2011-05-03T18:26:52.170 に答える