如何在多重选择中绑定枚举列表?
这是我的class属性(使用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>
我无法将枚举值作为数组,因为它是空的。
感谢阅读。
答案 0 :(得分:6)
您似乎认为${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()}
。
答案 1 :(得分:0)
尝试这样的方法将枚举作为List:
List<Color> colors = Arrays.asList(Color.values());
对于给定的枚举:
public enum Color {
blue,
red;
}
或者让你的getter立即返回数组或List:
public Color[] getColors(){
return Color.values();
}
列表
public List<Color> getColorList(){
return Arrays.asList(Color.values());
}