在此期间,我正在研究 Sping MVC 展示示例可下载表单 STS 仪表板。
请求数据部分显示了如何将 HTTP GET 请求的参数绑定到 JavaBean 的同名变量。
在实践中,我有以下链接:
<a id="group" class="textLink"
href="<c:url value="/data/group?param1=foo¶m2=bar¶m3=baz" />">
Group of query parameters
</a>
此链接生成一个指向“/data/group” URL 的 GET HTTP 请求。该请求携带 3 个参数,名为 param1、param2、param3。
此请求由我的控制器类的以下方法处理:
@RequestMapping(value="group", method=RequestMethod.GET)
public @ResponseBody String withParamGroup(JavaBean bean) {
return "Obtained parameter group " + bean;
}
withParamGroup() 方法使用一个 JavaBean 对象,该对象只是一个包含 3 个变量和 getter/setter 方法的对象,如下所示:
public class JavaBean {
private String param1;
private String param2;
private String param3;
// GETTER & SETTER method
}
所以 HTTP Request 中的 param1 参数存储在 JavaBean Object 的 param1 变量中,param2 和 param3 也是一样的。
好的...我想这对我来说很清楚...但是...谁做这个手术?它是由 Spring 框架自动生成的吗?
为什么我不必像在控制器方法中将单个 HTTP 请求参数与单个变量绑定时那样使用 @RequestParam 注释之类的东西?
另一个疑问是:HTTP 参数名称必须与 JavaBean 变量相同,还是只是第一个参数值存储在 JavaBean 对象的第一个变量中?
谢谢
安德烈亚