首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT,Enum,RadioButton和Editors框架

GWT,Enum,RadioButton和Editors框架
EN

Stack Overflow用户
提问于 2011-02-13 15:16:27
回答 2查看 4.1K关注 0票数 2

问题是:我有一个bean,这个bean有一个enum属性:

代码语言:javascript
复制
enum E {
    ONE, TWO, THREE;
}

class A implements Serializable {
    public E foo;
}

我想使用GWT编辑器框架让用户编辑这个bean

代码语言:javascript
复制
public class P extends FlowPanel implements Editor<A> {
    // ... UiBinder code here ...
    @UiField RadioButton one, two, three;
    // ...
}

我有个错误:

错误-在代理类型com.company.A中找不到路径1的getter 错误-在代理类型com.company.A中找不到路径2的getter 错误-在代理类型com.company.A中找不到路径3的getter

在GWT 2.2中,有什么方法可以让这一点发挥作用吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-13 21:39:06

代码语言:javascript
复制
public class EnumEditor extends FlowPanel implements LeafValueEditor<E> {

    private Map<RadioButton, E> map;

    @UiConstructor
    public EnumEditor(String groupName) {
        map = new HashMap<RadioButton, E>();
        for (E e: E.class.getEnumConstants()){
            RadioButton rb = new RadioButton(groupName, e.name());
            map.put(rb, e);
            super.add(rb);
        }
    }

    @Override
    public void setValue(E value) {
        if (value==null)
            return;
        RadioButton rb = (RadioButton) super.getWidget(value.ordinal());
        rb.setValue(true);
    }

    @Override
    public E getValue() {
        for (Entry<RadioButton, E> e: map.entrySet()) {
            if (e.getKey().getValue())
                return e.getValue();
        }
        return null;
    }
}
票数 8
EN

Stack Overflow用户

发布于 2011-02-13 16:24:07

问题不在于这件事。编译器正在寻找类似bean的getter方法,这些方法对应于uiFields 1、2和3。RadioButtons在实现IsEditor<LeafValueEditor<java.lang.Boolean>>接口时映射到布尔属性。

这将使您的示例代码正常工作,但它显然不是一个非常灵活的解决方案:

代码语言:javascript
复制
class A implements Serializable {
    public E foo;
    public Boolean getOne() {return foo==E.ONE;}
    public Boolean getTwo() {return foo==E.TWO;}
    public Boolean getThree() {return foo==E.THREE;}
}

要将一组无线电按钮映射到单个枚举属性(及其相应的getter/setter),您必须实现自己的编辑器,包装无线电按钮组,并返回E类型的值。它需要实现一个类似于IsEditor<LeafValueEditor<E>>的接口。

有一个关于GWT集团的相关讨论

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4984920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档