java如何使用GWT编辑器框架编辑多值字段?
当我的模型中有一个字段是集合、列表等时,我试图弄清楚如何使用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;
}
}
基本上,我就是不知道如何使用一个集合(我也尝试过列表)来获取字段,以便使用GWTs编辑器框架。迄今为止的调试表明,这些值正确地从编辑器中输出
我看过ListEditor,但它看起来像是用来编辑比对象类型更复杂的列表;没有包含多个可能值的单个字段。我实现了错误的编辑器类型?GWT编辑器还不能处理集合字段吗
# 1 楼答案
哎呀!我的代码将正常工作。我简化了我的实际场景,最终发现了我的错误。我的真实实体代理看起来更像:
ListBox总是以字符串形式返回值!因此,编辑器框架可能很难弄清楚如何将
Set<String>
转换为Set<BrokerType>
。我宁愿看到一个错误而不是无声的失败,但是哦,好吧这就是我首先扩展ListBox(以处理更复杂的类型)的原因,所以我想在编辑器框架知道如何处理集合之前,我需要让它工作起来