校验
很多界面上需要校验检查, 并且提供及时的反馈给用户, 这部分之前大多数是由前端同学基于接口规则编写, 逻辑上接口的校验规则是要等于甚至大于界面静态检查规则的.
因此 Fastball 提供了 Validation 的一系列声明方式, 可以直接生成相关界面交互.
Fastball 直接复用了 Java Bean Validation
的标准, 不同版本的 JSR 分别为 JSR303, JSR349 和 JSR380
目前支持的校验规则
因为 Java EE
后续改名为 Jakarta
, 所以理论上存在两版声明, 分别是 javax.validation
和 jakarta.validation
.
单独使用两者之一都生效, 但是如果两者都使用了的情况下, 两者规则的重复规则可能会出现重叠, 尽可能不要混合使用.
- NotNull: 检查是否为空, 前端会自动生成必填字段
- Min: 检查数字类型最小值
- Max: 检查数字类型最大值
- Size: 检查字符串类型的长度
- Pattern: 基于正则表达式检查
使用方式
整体的使用并没有什么差别, 只需要将相关注解声明在相关入参的字段上即可, 界面会根据声明的注解自动生成校验规则.
我们以代码为例:
java
public class Employee extends BasicModel {
@Field(title = "姓名", tips = "员工真实姓名")
@Size(min = 2, max = 64, message = "员工姓名长度必须在 [2 - 12] 之间")
@NotNull(message = "员工姓名不可为空")
private String name;
@Field(title = "证件号码", tips = "员工身份证号")
@Pattern(message = "需要符合身份证校验规则", regexp = "^(\\d{18}|\\d{15}|\\d{17}x)$")
private String certificateNumber;
@Field(title = "年龄", tips = "员工的年龄")
@Min(value = 18, message = "age >= 18")
@Max(value = 199, message = "age < 199")
private int age;
@Field(title = "员工类型", tips = "员工的类型")
@NotNull(message = "员工类型不可为空")
private EmployeeType type;
}
当表单类型组件使用该模型时, 会自动基于 Bean Validation
注解生成规则, 产生的前端界面如下图:
当我们尝试填写一些不符合规则的内容后, 表单就会自动完成相关校验检查, 并生成相关的提示信息, 效果如下图: