springboot自定义验证传值范围

package com.xf.common;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 边界值校验
 * @author Lilu
 * @date 2021-7-16 16:57
 */

import javax.validation.Constraint;
import javax.validation.Payload;

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { ValueInImpl.class })
public @interface ValueIn {

    String[] in();

    String message() default "参数不在允许范围";

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

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

}
package com.xf.common;

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

import org.springframework.stereotype.Component;

@Component
public class ValueInImpl implements ConstraintValidator<ValueIn, String> {

    String[] in;

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        for (int i = 0; i < in.length; i++) {
            if (in[i].equals(value))
                return true;
        }
        return false;
    }

    @Override
    public void initialize(ValueIn constraintAnnotation) {
        this.in = constraintAnnotation.in();
        ConstraintValidator.super.initialize(constraintAnnotation);
    }

}
@PostMapping("test")
    @ApiOperation(value = "0.test", notes = "")
    @ApiOperationSupport(order = 0)
    public Object test(@ApiParam("a") @ValueIn(in = { "1",
            "2" }, message = "hjdfashjfkhsakjf") @RequestParam(value = "a") String a) throws Exception {
//        DataSourceHolder.setDataSource("2");
        return R.ok();
    }
    @ExceptionHandler(value = ConstraintViolationException.class)
    @ResponseBody
    public Object jsonErrorHandler(HttpServletRequest req, ConstraintViolationException e) throws Exception {
        return R.error(e.getMessage());
    }

后台兼职接单中,联系我微信:wjf88520

by wujf

mail:921252375@qq.com

原文地址:https://www.cnblogs.com/wujf/p/15770576.html