[英]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.