Skip to content
本页目录

校验

很多界面上需要校验检查, 并且提供及时的反馈给用户, 这部分之前大多数是由前端同学基于接口规则编写, 逻辑上接口的校验规则是要等于甚至大于界面静态检查规则的.

因此 Fastball 提供了 Validation 的一系列声明方式, 可以直接生成相关界面交互.

Fastball 直接复用了 Java Bean Validation 的标准, 不同版本的 JSR 分别为 JSR303, JSR349JSR380

目前支持的校验规则

因为 Java EE 后续改名为 Jakarta, 所以理论上存在两版声明, 分别是 javax.validationjakarta.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 注解生成规则, 产生的前端界面如下图:

form-validation.png

当我们尝试填写一些不符合规则的内容后, 表单就会自动完成相关校验检查, 并生成相关的提示信息, 效果如下图:

form-validation-check.png