自定义hibernate后端参数验证注解

想验证前端传入对象的Integer属性

1.新建一个注解类 @FlagValidator

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 用户验证状态是否在指定范围内的注解
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.PARAMETER})
@Constraint(validatedBy = FlagValidatorClass.class)
public @interface FlagValidator {
    String[] value() default {};

    String message() default "flag is not found";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

2.新建一个类继承实现ConstraintValidator

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * @Description TODO
 * @Author xjy
 * @Date 2019/9/29
 */
public class FlagValidatorClass implements ConstraintValidator<FlagValidator, Integer> {

    private String[] values;

    @Override
    public void initialize(FlagValidator flagValidator) {
        values = flagValidator.value();
    }
   //下面的判断逻辑,values是注解里面的值, value 是属性的值
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) {
        boolean isValid = false;
        if (value == null){
            return true;
        }
        for (int i = 0; i < values.length; i++) {
            if (values[i].equals(String.valueOf(value))){
                isValid = true;
                break;
            }
        }
        return isValid;
    }
}

3.使用

  @FlagValidator(value = {"1", "5"}, message = "请输入正确的状态")
  private Integer status = 1;

  

原文地址:https://www.cnblogs.com/418836844qqcom/p/11640810.html

时间: 2024-11-11 18:39:30

自定义hibernate后端参数验证注解的相关文章

SpringBoot08 请求方式、参数获取注解、参数验证、前后台属性名不一致问题、自定义参数验证注解、BeanUtils的使用

1 请求方式 在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 1.1 GET 一般用于查询数据,采用明文进行传输,一般用来获取一些无关用户信息的数据 1.2 POST 一般用于插入数据 1.3 PUT 一般用于数据更新 1.4 DELETE 一般用于数据删除 技巧01:一般都是进行逻辑删除(即:仅仅改变记录的状态,而并非真正的删除数据) 2 参数获取注解 2.1

Hibernate Validator 参数验证框架

表 1. Bean Validation 中内置的 constraint Constraint  详细信息 @Null  被注释的元素必须为 null @NotNull  被注释的元素必须不为 null @AssertTrue  被注释的元素必须为 true @AssertFalse  被注释的元素必须为 false @Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @Decim

spring 使用hibernate validator参数验证

原文地址:https://www.cnblogs.com/angdh/p/11641832.html

写自定义参数验证方式

本次发表文章距上次发表已近有两月有余,原因是两月前离开了上家公司(离开原因可能会在年终终结叙述,本篇暂且忽略),来到了现在所在的京东集团,需要花时间熟悉环境和沉淀一下新的东西,因此写文章也暂时没那么勤奋了,不得不说这次是机遇也是对自己职业生涯的一次重要决定. 话说本篇内容主要分享的是自定义方法参数的验证,参数的基本校验在对外接口或者公用方法时经常所见,用过hibernate的验证方式的朋友一定不会陌生,读完本篇内容能够很好的帮助各位朋友对自定义参数验证方式有一定了解: 自定义参数验证的思路 实战

想必大家在做参数验证的时候,都会遇到一个问题,就是如何验证枚举? 自定义annotation 自定义Validator

想必大家在SpringMVC项目做请求参数验证的时候,都会遇到一个问题,就是如何验证枚举?方法无外乎以下几种: 方法1:直接用枚举定义字段类型 方法2:用Integer类型定义字段类型,然后在代码里面验证(即:放弃使用javax.validation.validator去统一验证) 缺点: 方法1的缺点:当枚举的value值不是从0开始有序设置时,就会出现问题,因为虽然spring支持枚举类型字段的解析,但其实它是根据枚举的index,也就是索引来解析的.并且直接在请求字段上使用枚举,这个不太规

Spring-Security自定义登录页&amp;inMemoryAuthentication验证

Spring Security是为基于Spring的应用程序提供声明式安全保护的安全性框架.框架下内容比较多,可以做到按照角色权限对请求路径进行限制.今天主要验证自定义登录页,在内存用户存储中进行请求的权限校验.闲话休提,下面直接探讨我的验证过程,如果有比较好的意见,欢迎各位指正. 1.系统使用Maven进行jar包管理,spring用的5.0版本.首先在pom文件中添加Spring Security的jar包依赖 <dependency> <groupId>org.springf

ASP.NET WebAPI 11 参数验证

在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性. ModelState 在ApiController中一个ModelState属性用来获取参数验证结果. public abstract class ApiController : IHttpController, IDisposable { public ModelStateDictionary ModelState { get; } } ApiContext的ModelState属性实

ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware.CustomizeMiddleware和Asp.NetCore Identity.但是由于所有的ASP.NET Core的版本有些老,所以,此次重写一次.使用最新的ASP.NET Core 1.1版本.对于ASP.NET Core 1.1 Preview 1会在以后的文章中介绍 目录 使用静态文件 使用路由

Java和C#下的参数验证

参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下: public bool Register(string name, int age) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("name should not be empty", "name"); } if (age < 10 || age > 70) { throw new ArgumentExcept