[英]Understanding the concept of data binding in a Spring-MVC app
我试图用Velocity理解Spring-MVC中的数据绑定的概念(我正在学习这个框架并将应用程序移植到这个平台)。
我习惯使用request.getParameter("username")
来获取表单变量,在Spring世界中我似乎可以对“ 表单对象 ”执行验证,例如表示表单所有字段的数据模式样式对象。
验证器的概念是有道理的,但是将查询字符串中的数据封送到这些对象仍然是模糊的。 这是“数据绑定”的概念是否正确?
如果我对这一点提出一些具体问题:
"username"
)和一个对象的字段(比如org.abMyNewUserFormObj.username
)之间的“绑定”是“绑定”一个永久定义,以便所有后续的http帖子form导致username
表单变量分配给org.abMyNewUserFormObj.username
? 感谢你直接让大脑误入歧途。
数据绑定没有魔力。
实际上,Spring只是@ModelAttribute
具有相应名称的请求参数的值来填充@ModelAttribute
对象的属性(在最简单的情况下,请求参数与属性具有相同的名称,但也支持嵌套属性 )。
所以,如果你有
<input type = "text" name = "firstName" />
和
public class Person {
private String firstName;
... getters, setters ...
}
你从表单字段中获取一个值。
Spring还提供了创建HTML表单的便捷方法。 因此,您可以在JSP中编写,而不是手动创建表单字段:
<form:form modelAttribute = "person" ...>
<form:input path = "firstName" />
</form:form>
或者在Velocity中(请注意,在这种情况下, <form>
是手动创建的,属性路径以模型属性名称为前缀):
<form ...>
#springFormInput("person.firstName" "")
</form>
以这种方式生成的表单的字段将预先填充模型属性的相应属性的值(这就是需要模型属性名称的原因)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.