我正在研究 Spring MVC Showcase 项目,可从 STS 仪表板下载
我有以下情况对我来说并不完全清楚:
我有以下表格:
<form id="readForm"action="<c:url value="/messageconverters/form" />" method="post">
<input id="readFormSubmit"type="submit"value="Read Form Data"/>
</form>
与具有 id="readForm" 的表单的提交操作相关,我有以下 Jquery 函数,它简单地执行一个 AJAX 调用 hadding 到请求的 body 字段两个 valorized 文本变量:**foo=bar和fruit=apple
$("#readForm").submit(function() {
var form = $(this); // Contiene il riferimento all'elemento form submittato
// Contiene il riferimento all'emento input all'interno del form (il bottone)
var button = form.children(":first");
$.ajax({
type: "POST", // Tipo di Request: POST
// URL specificato dall'attributo "action" del form: "/messageconverters/form"
url: form.attr("action"),
// Dati che vengono passati all'interno del campo body dell'HTTP Request, 2 variabili
data: "foo=bar&fruit=apple",
// Tipo di media type accettabile dalla response
contentType: "application/x-www-form-urlencoded",
dataType: "text", // Tipo di dati passato dalla HTTP Request
success: function(text) { // Caso di successo:
MvcUtil.showSuccessResponse(text, button);
},
error: function(xhr) { // Caso di errore:
MvcUtil.showErrorResponse(xhr.responseText, button);
}
});
return false;
});
我的控制器类处理这个请求的方法如下:
@RequestMapping(value="/form", method=RequestMethod.POST)
public @ResponseBody String readForm(@ModelAttribute JavaBean bean) {
return "Read x-www-form-urlencoded: " + bean;
}
好的,该方法将带有@ModelAttribute注释的 JavaBean 对象作为输入参数。
查看示例定义的 JavaBean 类,我有:
@XmlRootElement
public class JavaBean {
@NotNull
private String foo;
@NotNull
private String fruit;
public JavaBean() {
}
public JavaBean(String foo, String fruit) {
this.foo = foo;
this.fruit = fruit;
}
// GETTER e SETTER METHOD
}
因此,JavaBeans 包含两个与表单变量同名的属性,这些属性在我提交表单时生成的 HTTP 请求中传递
阅读@ModelAttribute注释文档(http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/bind/annotation/ModelAttribute.html)我发现我可以使用它既要注释方法,又要注释方法参数。
我的情况是第二种情况,对于这种情况,我可以阅读:将方法参数或方法返回值绑定到命名模型属性的注释,暴露给 Web 视图
那么具体是什么意思呢?
我认为,如果我用这个注释注释一个方法参数,这意味着如果在 HTTP 请求的正文中传递的变量名称与我的注释对象的变量匹配,Spring 会自动复制这个变量的值在具有相同属性的属性中注释对象中的名称
但我不确定这...
有人可以帮我理解这件事吗?
Tnx安德烈亚