如何在多选中绑定枚举列表?
这是我的类属性(带有 getter/setter):
private List<Color> colors;
这是我的jsp:
<form:select id="colors" path="colors" multiple="true">
<form:option value="" label="..."/>
<form:options items="${Color.values}" />
</form:select>
我无法将枚举值作为数组获取,因为它是空的。
感谢您的阅读。
您似乎认为${Color.values}
会调用静态Color.values()
方法。这是不正确的。
在Java EE 7(Tomcat 8)之前,JSP EL中不支持静态方法。 ${Color.values}
将搜索名为 Color
的属性,如果找到,则在此对象上调用 getValues()
。由于任何范围内都没有此类对象,因此选择框中没有任何选项。
要执行所需的操作,只需从 Spring 控制器调用 Color.values()
并将其添加到模型中,例如,在 allColors
属性名称下。然后使用
<form:options items="${allColors}" />
在您的 JSP 中
如果您使用的是 Java EE 7,则可以在 JSP 中导入 Color 类,并使用 ${Color.values()}
.
尝试这样的事情来获取枚举作为列表:
List<Color> colors = Arrays.asList(Color.values());
对于给定的枚举:
public enum Color {
blue,
red;
}
或者让你的 getter 立即返回数组或列表:
public Color[] getColors(){
return Color.values();
}
列表
public List<Color> getColorList(){
return Arrays.asList(Color.values());
}