Java 在Wicket中将枚举用作模型对象
要在PropertyModel中使用枚举类,可以编写:Java 在Wicket中将枚举用作模型对象,java,enums,wicket,Java,Enums,Wicket,要在PropertyModel中使用枚举类,可以编写: new PropertyModel(MyObject, "MyEnumClass"); 现在,只有在MyObject-类中定义了MyEnumClass时,这才有效 如何在模型中使用独立的枚举类 编辑:我具体化: RadioGroup<MyEnum> rg = new RadioGroup<MyEnum>("radioGroupID", new Model<MyEnum>(MyEnum.NORMAL));
new PropertyModel(MyObject, "MyEnumClass");
现在,只有在MyObject
-类中定义了MyEnumClass
时,这才有效
如何在模型中使用独立的枚举类
编辑:我具体化:
RadioGroup<MyEnum> rg = new RadioGroup<MyEnum>("radioGroupID", new Model<MyEnum>(MyEnum.NORMAL));
rg.add(new Radio<MyEnum>("radioNormal", new Model<MyEnum>(MyEnum.NORMAL)));
rg.add(new Radio<MyEnum>("radioSpecial", new Model<MyEnum>(MyEnum.SPECIAL)));
RadioGroup rg=new-RadioGroup(“RadioGroup id”,新模型(MyEnum.NORMAL));
添加(新收音机(“radioNormal”,新型号(MyEnum.NORMAL));
rg.add(新收音机(“radioSpecial”,新型号(MyEnum.SPECIAL));
这里的问题是,更改单选按钮不会更改
RadioGroup
上的模型。我一直在使用以下内容,但我的Enum“NMRType”下拉选择组件没有出现问题:
IModel<NMRType> default = Model.of(NMRType.HNMR);
List<NMRType> choices = Arrays.asList(NMRType.values());
DropDownChoice<NMRType> nmrDDC =
new DropDownChoice<NMRType>("nmrType", default, choices);
IModel default=Model.of(NMRType.HNMR);
列表选项=Arrays.asList(NMRType.values());
DropDownChoice nmrDDC=
新的下拉选项(“nmrType”,默认值,选项);
请注意:小心不要写入枚举模型。。Wicket使用反射,如果你这样做的话,这可能会带来一些惊喜。我刚刚发现了问题:我在我的
RadioGroup上使用了AjaxEventBehavior
,而不是AjaxFormChoiceComponentUpdatingBehavior
这解决了问题中代码的模型更新问题。谢谢,但如何使用单选按钮实现这一点?(请参阅我帖子中的编辑)@rotsch我不是100%确定,但请考虑使用而不是简单,因为您已经在使用RadioGroup..RadioChoice是不灵活的,但无论如何,谢谢,我发现了错误,请参阅topI刚刚发现的问题:我在我的RadioGroup
上使用了AjaxEventBehavior
,而不是AjaxFormChoiceComponentUpdatingBehavior
。这修复了问题中我的代码的模型更新。很高兴听到你发现了错误。。从您的问题中不明显看出,您最初使用的是Ajax,但AFCCUB是Wicket中具有精选组件的需求。