【问题标题】:How to edit a multi-value field with GWT Editor framework?如何使用 GWT Editor 框架编辑多值字段?
【发布时间】:2011-04-16 01:58:20
【问题描述】:

当我的模型具有 Set、List 等字段时,我试图弄清楚如何使用 GWT 编辑器。

我有这个实体代理:

public interface MyModel {
  void setSomeCollection(Set<String> c);
  Set<String> getSomeCollection();
}

这是我的多选字段。我正在扩展 ListBox,以便以后可以更改它的一些行为。

public class DualListBox extends ListBox implements LeafValueEditor<Set<String>> {

    public DualListBox() {
        super(true);
    }

    @Override
    public void setValue(Set<String> values) {
        if (values == null) {
            return;
        }

        for (String value : values) {
            for (int i = 0; i < getItemCount(); i++) {
                if (getValue(i).equals(value)) {
                    setItemSelected(i, true);
                } else {
                    setItemSelected(i, false);
                }
            }
        }
    }

    @Override
    public Set<String> getValue() {
        Set<String> values = new HashSet<String>();
        for (int i = 0; i < getItemCount(); i++) {
            if (isItemSelected(i)) {
                values.add(getValue(i));
            }
        }

        // Debug shows that the set of values is populated correctly..
        return values;
    }
}

基本上我只是不知道如何使用 Set 获取字段(我也尝试过 List)以使用 GWTs Editor 框架。到目前为止的调试表明值正确地从编辑器中输出。

我看过 ListEditor,但它看起来像是用来编辑更复杂的对象类型的列表;不是具有多个可能值的单个字段。我正在实施错误的编辑器类型? GWT 编辑器还不能处理集合字段吗?

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    哎呀!我拥有的代码将正常工作。我稍微简化了我的实际场景,最终发现了我的错误。我的真实实体代理看起来更像:

    public interface MyModel {
      // BrokerType is an enum
      void setBrokerTypes(Set<BrokerType> brokerTypes);
      Set<BrokerType> getBrokerTypes();
    }
    

    ListBox 总是以字符串的形式返回值!所以编辑器框架可能很难弄清楚如何将Set&lt;String&gt; 转换为Set&lt;BrokerType&gt;。宁愿看到错误而不是静默失败,但是哦。

    这就是我首先扩展 ListBox 的原因(以处理更复杂的类型),所以我想我需要先让它工作,然后才能期望编辑器框架知道如何处理 Set。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2011-06-26
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多