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()); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)