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());
}

最新文章

  1. Android开发学习—— Broadcast广播接收者
  2. excel多组数据散点图生成
  3. 转载:align
  4. glut编译问题 (程序无法运行)
  5. xorm使用pgsql的例子
  6. C# 扩展方法奇思妙用高级篇六:WinForm 控件选择器
  7. 领接表的建立和它的DFS, BFS;;;
  8. OC第一天-Xcode、工程组成及运行状态
  9. ubuntu基本使用
  10. HDU 1814 Peaceful Commission / HIT 1917 Peaceful Commission /CJOJ 1288 和平委员会(2-sat模板题)
  11. 关于html5 data-*自定义属性相关注意点和踩过的坑
  12. .NET Core:依赖注入
  13. 洛谷 P1047 校门外的树
  14. nginx和resin一二三
  15. 使用==操作符比较命令行参数args[0]和字符串返回“Invalid type&quot;
  16. xtrabackup 备份和恢复
  17. Linux基础命令-mkdir
  18. TOMCAT8源码分析——SESSION管理分析(上)
  19. mysql如何批量删除数据表
  20. 山东省第四届省赛 E-Mountain Subsequences

热门文章

  1. 支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程
  2. onps栈使用说明(2)——ping、域名解析等网络工具测试
  3. Go语言核心36讲52
  4. 数电第三周周结_by_yc
  5. 【每日一题】【归并排序/堆排序&amp;虚拟头结点】148. 排序链表-211220/220217【出栈时不断容易产生环状链表!】
  6. 看起来简单实际上却很牛的KMP算法:LeetCode572-另一棵树的子树
  7. Hexo+next主题美化
  8. JavaScript:函数:函数的参数
  9. 掌握webpack(一)一张图让你明白webpack中output的filename、path、publicPath与主流插件的关系
  10. Hadoop详解(03)-Hadoop编译源码-了解