@Pattern、@NotNUll、@Length等校验注解的使用

package com.jhsec.iam.core.modules.excel.service;

import org.hibernate.validator.constraints.Length;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.NotNull;
import java.util.Set;

/**
 * @author 16903
 * @date 2023-07-30 22:06
 */
public class Main {
    public static void main(String[] args) {
        // 创建验证器工厂
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        // 获取验证器实例
        Validator validator = factory.getValidator();

        // 创建待验证的对象
        Object obj = new MyObject(null);

        // 执行验证
        Set> validate = validator.validate(obj);

        // 处理验证结果
        if (validate.isEmpty()) {
            System.out.println("对象验证通过");
        } else {
            System.out.println("对象验证不通过,错误信息如下:");
            for (ConstraintViolation violation : validate) {
                System.out.println(violation.getPropertyPath() + ": " + violation.getMessage());
            }
        }
    }
}

class MyObject {
    @NotNull(message = "属性不能为空")
    @Length(max = 1,message = "长度超过1了")
    @Pattern(regexp = "^\\s*|[0-9A-Za-z]*$", message = "编号为数字和字母组合")
    private String property;

    public MyObject(String property) {
        this.property = property;
    }

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }
} 
  

@NotNull注解来标记MyObject类的property属性不能为空。通过Validation.buildDefaultValidatorFactory()创建验证器工厂,然后使用factory.getValidator()获取验证器实例。然后,我们创建了一个MyObject实例,并将其传递给validator.validate()方法进行验证。验证结果存储在Set>中,我们可以根据需要进行处理。

以上代码将根据MyObject定义的约束进行验证,并打印出验证结果。如果验证通过,将会输出"对象验证通过",否则将输出相应的错误信息。请根据实际需求进行相应的修改。

你可能感兴趣的:(java)