选择枚举列表的倍数



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

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

最新更新