我有表格支持对象:
public class MyDto {
private Set<MyEnum> myEnum = new HashSet<MyEnum>();
// getters/setters
public MyEnym[] getMyEnumValues() {
return MyEnum.values();
}
}
public MyEnum {
A, B, C
}
在<form:select multiple="true"/>
中显示所有枚举值并实现在表单支持对象中自动将所选值映射到myEnum
字段的方法是什么?
更新 一些代码:
<form:select path="myEnum" multiple="true" items="${myDto.myEnumValues}"/>
提交表单时,多选中的选定值显示在HTTP请求中:
myEnum: A
myEnum: B
public String saveMyDto(@Valid @ModelAttribute("myDto") MyDto myDto) {
log.debug("Enum list: " + myDto.myEnum().toString());
....
}
答案 0 :(得分:1)
关键的想法是将值分配给item
的{{1}}属性。
我使用表单add
填充视图的控制器form:select
在jsp中使用:
modelMap.addAttribute("possibleValues", MyEnum.values);
(另一方面,我记得我已经看过spring的select标签实现了,发现实际值的值是Enum,然后spring自动使用所有{{1 } {作为<form:select multiple="true" items="${possibleValues}" path="myDto.myEnum"/>
的默认值(但我不是100%肯定))
Controller方法应该看起来像
Enum.values