4

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

这是我的类属性(带有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>

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

谢谢阅读。

4

2 回答 2

6

您似乎认为这${Color.values}将调用静态Color.values()方法。这是不正确的。

在 Java EE 7 (Tomcat 8) 之前,JSP EL 中不支持静态方法。${Color.values}将搜索名为 的属性Color,如果找到,则调用getValues()此对象。由于在任何范围内都没有这样的对象,因此您的选择框中将没有任何选项。

要做你想做的事,只需Color.values()从你的 Spring 控制器调用并将其添加到模型中,例如,在allColors属性名称下。然后使用

<form:options items="${allColors}" />

在你的 JSP 中

如果您使用的是 Java EE 7,则可以在 JSP 中导入 Color 类,然后使用${Color.values()}.

于 2013-12-03T21:06:09.580 回答
0

尝试这样的事情来获取枚举作为列表:

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());
    }
于 2013-12-10T03:50:35.257 回答