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
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());
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章