验证(Validation)
验证模块是服务端参数有效性验证工具,采用注解声明方式配置验证规则,更简单、更直观、更友好,支持方法参数和类成员属性验证,支持验证结果国际化 I18N 资源绑定,支持自定义验证器,支持多种验证模式。
Maven包依赖
<dependency>
<groupId>net.ymate.platform</groupId>
<artifactId>ymate-platform-validation</artifactId>
<version>2.1.4-dev</version>
</dependency>
基础注解及参数说明
@Validation
声明在类或类方法之上,用于配置验证模式和自定义国际化资源文件。
当目标类和方法上都声明了该注解,则方法上的声明将被优先使用。
| 配置项 | 描述 |
|---|---|
| mode | 验证模式,默认为 NORMALNORMAL - 短路式验证,即验证过程中一旦出现未通过即刻终止验证FULL - 对类属性或方法参数进行全部验证 |
| resourcesName | 自定义 I18N 资源文件名称,默认为空表示采用系统默认 |
@Validator
声明一个类为验证器。
| 配置项 | 描述 |
|---|---|
| value | 设置与验证器绑定的验证注解类型 |
@VField
指定待验证的成员或方法参数名称的注解。
| 配置项 | 描述 |
|---|---|
| prefix | 绑定的参数名称前缀 @since 2.1.3 |
| value | 参数名称(用于与集成端业务参数一致)@since 2.1.3 |
| name | 自定义参数名称(用于显示) |
| label | 自定义参数I18n标签名称 |
@VModel
声明目标对象是否为 JavaBean 对象,将执行对象嵌套验证。
| 配置项 | 描述 |
|---|---|
| prefix | 绑定的参数名称前缀 @since 2.1.3 |
@VMsg
自定义验证消息,用于替代验证器返回的消息内容。
验证器注解中的 msg 参数优先级高于 @VMsg 注解。
| 配置项 | 描述 |
|---|---|
| value | 消息内容 |
@ValidateGroups
@since 2.1.4
声明在类或方法之上,用于配置当前验证使用的分组。当未显式传入分组参数时,验证框架将从目标类或方法上读取该注解声明的分组。
| 配置项 | 描述 |
|---|---|
| value | 验证分组,默认为 DefaultGroup支持声明多个分组,如: @ValidateGroups({Create.class, Update.class}) |
分组解析优先级:显式传入 groups 参数 > 方法上的 @ValidateGroups > 类上的 @ValidateGroups > 默认 DefaultGroup
@VCondition
@since 2.1.4
声明验证注解的条件,当条件满足时才执行验证。
| 配置项 | 描述 |
|---|---|
| type | 条件类型(枚举值),默认为 ALWAYS取值范围: ALWAYS、FIELD_EQUALS、FIELD_NOT_EQUALS、FIELD_GT、FIELD_GT_EQ、FIELD_LT、FIELD_LT_EQ、FIELD_NOT_EMPTY、FIELD_EMPTY |
| field | 依赖的参数名称 |
| expectedValue | 期望值(用于 FIELD_EQUALS、FIELD_NOT_EQUALS、FIELD_GT、FIELD_GT_EQ、FIELD_LT、FIELD_LT_EQ 类型条件) |
验证分组
@since 2.1.4
验证分组允许同一个 DTO 对象在不同操作场景下应用不同的验证规则。例如,在创建和更新操作中,某些字段的验证要求可能不同。
分组接口定义
分组可以是任意 Class 类型,仅用于标识不同的验证场景。通常使用空接口即可:
/**
* 创建操作分组
*/
public interface Create {
}
/**
* 更新操作分组
*/
public interface Update {
}