我对带有这样的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将使用索引来标识选定的枚举值。此处不涉及任何转换。