我对带有这样的dropdownchoice的Java Wicket表单有问题:

public class SomePage extends WebPage {
    public SomePage () {
        CompoundPropertyModel<SomeBean> properties = new CompoundPropertyModel<SomeBean>(new SomeBean());
        Form<SomeBean> form = new Form<SomeBean>("SomeBeanForm", properties) {
        //override on submit
            };
        form.add(new DropDownChoice<MyEnum>("myEnum", Lists.newArrayList(MyEnum.values()));
        add(form);
    }
}


SomeBean很简单,如下所示:

public class SomeBean {
    private MyEnum myEnum;
    // Getter, Setter
    public SomeBean(){
    }
}


MyEnum是:

public enum MyEnum {
    CHOICE1("1"),
    CHOICE2("2");
    private String id;
    public MyEnum(String id) {
        this.id=id;
    }
    //some methods to get/set/display id
}


我的问题是如何使用CompoundPropertyModel在bean中设置枚举?我得到一个类似的异常:

Could not convert value: CHOICE1 to type: MyEnum Could not find compatible converter.


这是由于它不知道如何将任何内容转换为MyEnum对象而引起的,它需要易于创建的转换器,但是我该如何为CompoundPropertyModel创建的PropertyModel设置转换器?

谢谢你的帮助!

- 编辑 -

枚举的导入是错误的,bean和dropdownchoice使用了具有相同名称的不同枚举。此代码有效。

最佳答案

那应该可以正常工作:默认情况下,DropDownChoice将使用索引来标识选定的枚举值。此处不涉及任何转换。

07-26 02:06