验证、数据绑定和类型转换

将验证视为业务逻辑有利有弊,Spring 提供了一种验证和数据绑定的设计,两者兼顾。具体来说,验证不应与 Web 层绑定,应易于本地化,并且应能够插入任何可用的验证器。考虑到这些问题,Spring 提供了一个 Validator 契约,它既基础又可在应用程序的每个层中完美使用。

数据绑定对于让用户输入动态绑定到应用程序的域模型(或您用于处理用户输入的任何对象)非常有用。Spring 提供了恰如其名的 DataBinder 来实现这一点。ValidatorDataBinder 构成了 validation 包,该包主要用于但不限于 Web 层。

BeanWrapper 是 Spring 框架中的一个基本概念,在许多地方都使用到。但是,您可能不需要直接使用 BeanWrapper。然而,由于这是参考文档,我们认为有必要进行一些解释。我们在本章中解释 BeanWrapper,因为如果您要使用它,最有可能是在尝试将数据绑定到对象时。

Spring 的 DataBinder 和更底层的 BeanWrapper 都使用 PropertyEditorSupport 实现来解析和格式化属性值。PropertyEditorPropertyEditorSupport 类型是 JavaBeans 规范的一部分,也将在本章中进行解释。Spring 的 core.convert 包提供了通用的类型转换功能,以及用于格式化 UI 字段值的更高级的 format 包。您可以将这些包用作 PropertyEditorSupport 实现的更简单替代方案。它们也将在本章中讨论。

Spring 通过设置基础设施和适配器支持 Java Bean Validation,以适应 Spring 自己的 Validator 契约。应用程序可以全局启用 Bean Validation,如 Java Bean Validation 中所述,并将其专门用于所有验证需求。在 Web 层,应用程序可以为每个 DataBinder 进一步注册控制器本地的 Spring Validator 实例,如 配置 DataBinder 中所述,这对于插入自定义验证逻辑非常有用。

© . This site is unofficial and not affiliated with VMware.