校驗、資料繫結和型別轉換
將校驗視為業務邏輯有利有弊,Spring 提供了一種校驗和資料繫結的設計,該設計並不排除其中任何一種。具體來說,校驗不應與 Web 層繫結,應易於本地化,並且應能夠插入任何可用的校驗器。考慮到這些問題,Spring 提供了一個既基本又易於在應用程式的每一層中使用的 Validator
契約。
資料繫結有助於將使用者輸入動態繫結到應用程式的領域模型(或您用於處理使用者輸入的任何物件)。Spring 提供了恰如其名的 DataBinder
來實現此功能。Validator
和 DataBinder
構成了 validation
包,該包主要用於但不限於 Web 層。
BeanWrapper
是 Spring Framework 中的一個基本概念,並在許多地方使用。但是,您可能不需要直接使用 BeanWrapper
。然而,由於這是參考文件,我們認為有必要進行一些解釋。我們在本章中解釋 BeanWrapper
,因為如果您要使用它,很可能是在嘗試將資料繫結到物件時使用。
Spring 的 DataBinder
和較低層的 BeanWrapper
都使用 PropertyEditorSupport
實現來解析和格式化屬性值。PropertyEditor
和 PropertyEditorSupport
型別是 JavaBeans 規範的一部分,本章中也有解釋。Spring 的 core.convert
包提供了一個通用的型別轉換功能,以及一個用於格式化 UI 欄位值的高層 format
包。您可以使用這些包作為 PropertyEditorSupport
實現的更簡單替代方案。本章中也討論了它們。
Spring 透過設定基礎結構和對 Spring 自己的 Validator
契約的介面卡來支援 Java Bean 校驗。應用程式可以在全域性範圍內一次性啟用 Bean 校驗,如Java Bean 校驗中所述,並將其專門用於所有校驗需求。在 Web 層,應用程式可以根據每個 DataBinder
進一步註冊控制器本地的 Spring Validator
例項,如配置 DataBinder
中所述,這對於插入自定義校驗邏輯非常有用。