如何将一组枚举值绑定到表单中:在Spring中选择multiple =“true”?

时间:2013-12-03 18:36:31

标签: java spring enums spring-form

我有表格支持对象:

public class MyDto {
  private Set<MyEnum> myEnum = new HashSet<MyEnum>();
  // getters/setters

  public MyEnym[] getMyEnumValues() {
     return MyEnum.values();
  }
}
public MyEnum {
A, B, C
}

<form:select multiple="true"/>中显示所有枚举值并实现在表单支持对象中自动将所选值映射到myEnum字段的方法是什么?

更新 一些代码:

<form:select path="myEnum" multiple="true" items="${myDto.myEnumValues}"/>

提交表单时,多选中的选定值显示在HTTP请求中:

myEnum: A
myEnum: B


public String saveMyDto(@Valid @ModelAttribute("myDto") MyDto myDto) {

    log.debug("Enum list: " + myDto.myEnum().toString());
    .... 
}

1 个答案:

答案 0 :(得分:1)

关键的想法是将值分配给item的{​​{1}}属性。

我使用表单add

填充视图的控制器
form:select

在jsp中使用:

  modelMap.addAttribute("possibleValues", MyEnum.values);

(另一方面,我记得我已经看过spring的select标签实现了,发现实际值的值是Enum,然后spring自动使用所有{{1 } {作为<form:select multiple="true" items="${possibleValues}" path="myDto.myEnum"/> 的默认值(但我不是100%肯定))

Controller方法应该看起来像

Enum.values