GWT ValueListBox 编辑器

发布于 2024-11-04 07:54:58 字数 1659 浏览 0 评论 0原文

我对如何将 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;
    }
}

这是 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>

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

I'm puzzled about how to use GWT's ValueListBox with an Editor. I'm getting this ERROR:

The method setValue(String) in the type TakesValueEditor<String> 
is not applicable for the arguments (List<String>)

Here's the relevant code.

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;
    }
}

Here's what's in ui.xml with xmlns:g='urn:import:com.google.gwt.user.client.ui'>

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

I'm surely missing something obvious here. Much thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

当爱已成负担 2024-11-11 07:54:58

您遇到的问题与尝试将 List映射有关。 dateFormatsMyBeanValueListBox上dateFormats 编辑器。数据类型不兼容,因为 ValueListBox 不会编辑 List,而是编辑所选 T 的单个实例来自 setAcceptableValues() 提供的列表。鉴于上面的示例,MyBean 拥有 String getDateFormat() 属性并将编辑器字段重命名为 dateFormat 是有意义的。

The problem that you're running into has to do with trying to map the List<String> dateFormats from MyBean onto the ValueListBox<String> dateFormats editor. The datatypes are incompatible, since a ValueListBox<T> doesn't edit a List<T>, but instead a single instance of T chosen from a list provided by setAcceptableValues(). Given the example above, it would make sense for MyBean to have a String getDateFormat() property and rename the editor field to dateFormat.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文