gpt4 book ai didi

java - 如何将枚举值集绑定(bind)到表单 :select multiple ="true" in Spring?

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:03 24 4
gpt4 key购买 nike

我有表单支持对象:

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());
....
}

最佳答案

关键思想是将值分配给 form:selectitem 属性。

I 使用表单 add 填充 View 的 Controller

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

在jsp中使用:

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

(另一方面,我记得我看过spring的select标签实现,发现它的实际值是一个Enum,然后spring自动使用所有Enum.values作为items的默认值(但我不是100%确定)

Controller 方法应该如下所示

@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);
}

关于java - 如何将枚举值集绑定(bind)到表单 :select multiple ="true" in Spring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20359013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com