繁体   English   中英

理解Spring-MVC应用程序中数据绑定的概念

[英]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
  • 我如何在世界上完成上述绑定定义? (如果我现在所说的是正确的,我觉得Costello在'谁在第一',我甚至不知道我刚刚说了什么!),我只需要一张概念图。

感谢你直接让大脑误入歧途。

数据绑定没有魔力。

实际上,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM