这是问题:我有一个bean,这个bean有一个枚举属性:
enum E {
ONE, TWO, THREE;
}
class A implements Serializable {
public E foo;
}
Run Code Online (Sandbox Code Playgroud)
我想使用GWT Editor框架让用户编辑这个bean
public class P extends FlowPanel implements Editor<A> {
// ... UiBinder code here ...
@UiField RadioButton one, two, three;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
[错误] [gwtmodule] - 在代理类型com.company.A中找不到路径1的getter
[错误] [gwtmodule] - 无法在代理类型com.company.A中找到路径二的getter
[错误] [gwtmodule] - 在代理类型com.company.A中找不到路径3的getter
有没有办法在GWT 2.2中完成这项工作?
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;
}
}
Run Code Online (Sandbox Code Playgroud)