Dav*_*rks 4 java data-binding spring-mvc
我试图用Velocity 理解Spring-MVC中的数据绑定的概念(我正在学习这个框架并将应用程序移植到这个平台).
我习惯于使用表单变量request.getParameter("username"),在Spring世界中我似乎可以对" 表单对象 " 执行验证,例如表示表单所有字段的数据模式样式对象.
验证器的概念是有道理的,但是将查询字符串中的数据封送到这些对象仍然是模糊的.这是"数据绑定"的概念是否正确?
如果我对这一点提出一些具体问题:
"username"例如)之间进行"绑定" 并且对象的字段(比如说org.a.b.MyNewUserFormObj.username)是"绑定"永久定义时,该表单的所有后续http帖子都会导致username表单变量被分配到org.a.b.MyNewUserFormObj.username?感谢你直接让大脑误入歧途.
数据绑定没有魔力.
实际上,Spring只是@ModelAttribute使用具有相应名称的请求参数的值来填充对象的属性(在最简单的情况下,请求参数与属性具有相同的名称,但也支持嵌套属性).
所以,如果你有
<input type = "text" name = "firstName" />
Run Code Online (Sandbox Code Playgroud)
和
public class Person {
private String firstName;
... getters, setters ...
}
Run Code Online (Sandbox Code Playgroud)
你从表单字段中获取一个值.
Spring还提供了创建HTML表单的便捷方法.因此,您可以在JSP中编写,而不是手动创建表单字段:
<form:form modelAttribute = "person" ...>
<form:input path = "firstName" />
</form:form>
Run Code Online (Sandbox Code Playgroud)
或者在Velocity中(请注意,在这种情况下<form>,手动创建,属性路径以模型属性名称为前缀):
<form ...>
#springFormInput("person.firstName" "")
</form>
Run Code Online (Sandbox Code Playgroud)
以这种方式生成的表单的字段将预先填充模型属性的相应属性的值(这就是需要模型属性名称的原因).
| 归档时间: |
|
| 查看次数: |
9009 次 |
| 最近记录: |