绑定设置与Wicket中的ListItems一起形成

时间:2017-07-31 05:00:39

标签: java apache wicket

所以我使用Apache Wicket,我有Model类,其属性为:

private String name;
private Set<Details> details;

其中Details类是

private String detailsName;
private DetailsEnum detailsEnum;

和DetailsEnum是枚举{SOME,MORE,MOST}。 我有一套细节问题。有ListView,但它适用于List,而不是Set。 我需要这样的表格:

名称:[ examplemodelname ]

detailsName :[此处带有此枚举的dropDownChoice]

detailsName :[此处带有此枚举的dropDownChoice]

detailsName :[此处带有此枚举的dropDownChoice]

但我不知道如何以正确的方式绑定Set。

1 个答案:

答案 0 :(得分:0)

您想要创建3 dropDownChoice,但在您的模型中,您有一组详细信息。不能确定在集合中存在3个对象。

我会更改模型:

private String name;
private DetailsEnum detail1;
private DetailsEnum detail2;
private DetailsEnum detail3;

使用您模型的CompundPropertyModel进行表单:

form.add(new DropDownChoice<>("detail1"), Arrays.asList(DetailsEnum.SOME, DetailsEnum.MORE, DetailsEnum.MOST), new Arrays.asList(DetailsEnum.values()));
form.add(new DropDownChoice<>("detail2"), Arrays.asList(DetailsEnum.SOME, DetailsEnum.MORE, DetailsEnum.MOST), new Arrays.asList(DetailsEnum.values()));
form.add(new DropDownChoice<>("detail3"), Arrays.asList(DetailsEnum.SOME, DetailsEnum.MORE, DetailsEnum.MOST), new Arrays.asList(DetailsEnum.values()));

您还可以重写显示的值,new Arrays.asList(DetailsEnum.values())new EnumChoiceRenderer<DetailsEnum>(this)除外,并在属性文件中定义类似的内容:

DetailsEnum.SOME=Some
DetailsEnum.MORE=More
DetailsEnum.MOST=Most