zoukankan      html  css  js  c++  java
  • validation注解及自定义注解

    Bean Validation 中内置的 constraint:

    • @Null 被注释的元素必须为 null
    • @NotNull 被注释的元素必须不为 null
    • @AssertTrue 被注释的元素必须为 true
    • @AssertFalse 被注释的元素必须为 false
    • @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    • @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    • @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    • @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
    • @Digits(integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
    • @Past 被注释的元素必须是一个过去的日期
    • @Future 被注释的元素必须是一个将来的日期
    • @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

    Hibernate Validator 附加的 constraint:

    • @NotBlank 验证字符串非null,且长度必须大于0
    • @Email 被注释的元素必须是电子邮箱地址
    • @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
    • @NotEmpty 被注释的字符串的必须非空
    • @Range(min=,max=,message=) 被注释的元素必须在合适的范围内

    自定义注解 

    package com.nf147.ssm.annotation;
    
    import java.lang.annotation.*;
    import java.util.Arrays;
    import javax.validation.ConstraintValidator;
    import javax.validation.ConstraintValidatorContext;
    import javax.validation.Payload;
    
    @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Status {
    
        String message() default "没有这个类型,请重新选择";
    
        Class<?>[] groups() default {};
    
        Class<? extends Payload>[] payload() default {};
    }
    class StatusValidator implements ConstraintValidator<Status,String>{
    
        @Override
        public void initialize(Status constraintAnnotation) {
    
        }
    
        @Override
        public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
         //判断传入的值 s 是否是集合里的值 return Arrays.asList("create","shop").contains(s); } }

     之后,在实体类对于指端上加上 @Status 就可以了

  • 相关阅读:
    C语言中const关键字的用法
    LDO和DC-DC的概念,区别及优缺点
    Ubuntu下几个命令行方式使用的图片浏览工具
    I2C和I2S的区别和使用方法
    scikit-image 图像处理库介绍
    USB协议介绍
    Ubuntu 16.04 python和OpenCV安装
    一种基于python的人脸识别开源系统
    numpy 介绍
    python enumerate用法总结
  • 原文地址:https://www.cnblogs.com/wfhking/p/9882198.html
Copyright © 2011-2022 走看看