我是 Spring MVC 的新手(来自 Grails)。是否可以使用 HashMap 作为表单支持 bean?
在 Grails 中,人们可以从任何控制器操作访问名为 params 的对象。 Params 只是一个映射,其中包含 POST 数据中包含的所有字段的值。根据我到目前为止所读到的内容,我必须为我的所有表单创建一个表单支持 bean。
是否可以使用地图作为支持对象?
您不需要为此使用表单支持对象。如果您只想访问请求中传递的参数(例如 POST、GET ...),您需要获取参数映射HttpServletRequest#getParameterMap
方法。查看将所有参数名称和值打印到控制台的示例。
另一方面。如果你想使用绑定,你可以包装Map
对象转化为表单支持 bean。
控制器
import java.util.Arrays;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class ParameterMapController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String render() {
return "main.html";
}
@RequestMapping(value = "/", method = RequestMethod.POST)
public String submit(HttpServletRequest req) {
Map<String, String[]> parameterMap = req.getParameterMap();
for (Entry<String, String[]> entry : parameterMap.entrySet()) {
System.out.println(entry.getKey() + " = " + Arrays.toString(entry.getValue()));
}
return "redirect:/";
}
}
主要.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8" />
</head>
<body>
<form th:action="@{/}" method="post">
<label for="value1">Value 1</label>
<input type="text" name="value1" />
<label for="value2">Value 2</label>
<input type="text" name="value2" />
<label for="value3">Value 3</label>
<input type="text" name="value3" />
<input type="submit" value="submit" />
</form>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)