选择多个枚举列表

时间:2013-10-21 12:19:25

标签: spring jsp binding enums

如何在多重选择中绑定枚举列表?

这是我的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>

我无法将枚举值作为数组,因为它是空的。

感谢阅读。

2 个答案:

答案 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());
    }
相关问题