簡體   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