Java 如何将枚举值集绑定到表单:选择多个=";“真的”;春天?

Java 如何将枚举值集绑定到表单:选择多个=";“真的”;春天?,java,spring,enums,spring-form,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 } 提交表单时,multiselect中的选定值将显示在HTTP请

我有表格支持对象:

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

  public MyEnym[] getMyEnumValues() {
     return MyEnum.values();
  }
}
public MyEnum {
A, B, C
}
提交表单时,multiselect中的选定值将显示在HTTP请求中:

myEnum: A
myEnum: B


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

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

关键思想是将值分配给
表单:select
属性

I使用表单add填充视图的控制器

  modelMap.addAttribute("possibleValues", MyEnum.values);
在jsp中,请使用:

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

谢谢我尝试了它,但它不起作用:它从multi-select发送所选的值,但表单备份对象中的字段
myEnum
为空。请发布控制器方法的代码,以及发送到服务器的表单submitUpdated上的确切请求(参数和值)。请注意,HTML表单中的所有其他参数都是mappred到表单支持对象字段fine@MyTitle:您需要配置jsp,以便在将
path
设置为
myDto.myEnum
后,使用键
myDto.myEnum
提交所选值,以获得运行时异常。我认为这是不允许的,因为我已经在
<form:select multiple="true" items="${possibleValues}" path="myDto.myEnum"/>
@RequestMapping(value="/form", Method=RequestMethod.GET)
public ModelAndView whatever() {
     ModelMap modelMap = new ModelMap();
     modelMap.addAttribute("possibleValues", MyEnum.values);
     return new ModelMap("nameOfTheView", modelMap);
}

@RequestMapping(value="/whatever", Method=RequestMethod.POST)
public ModelAndView whatever(MyDto myDto) {
      Sysout.println(myDto);
}