驗證、資料繫結和類型轉換
將驗證視為業務邏輯有利有弊,而 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
中所述,這對於外掛自訂驗證邏輯可能很有用。