java使用注解校验对象属性值数据长度

定义注解

import java.lang.annotation.*;

/**

* describe:定义注解

* current user Maochao.zhu

* current system 2020/11/27

*/

@Target({ ElementType.FIELD, ElementType.TYPE })

@Inherited

@Documented

@Retention(RetentionPolicy.RUNTIME)

public @interface DataStringLen

{

int value();

}

定义校验参数长度的帮助类

import java.lang.annotation.Annotation;

import java.lang.reflect.Field;

/**

* 校验数据长度的帮助类

*

* @author lupf

*/

public class DataLenCheckHelper {

/**

* 校验数据属性至

*

* @param obj

* @throws Exception

*/

@SuppressWarnings("rawtypes")

public static String checkAttributeValueLen(Object obj){

String warning="ok";

if (null != obj) {

// 得到class

Class cls = obj.getClass();

System.out.println("校验对象中参数的数据长度是否符合要求,校验对象:" + cls.getName());

// 得到所有属性

Field[] fields = cls.getDeclaredFields();

for (int i = 0; i < fields.length; i++) {// 遍历

try {

// 得到属性

Field field = fields[i];

Annotation[] anns = field.getAnnotations();

DataStringLen dataLen = null;

for (Annotation ann : anns) {

if (ann instanceof DataStringLen)

dataLen = (DataStringLen) ann;

}

// 判断该属性是否有校验数据长度的注解

if (null != dataLen) {

// 打开私有访问

field.setAccessible(true);

// 获取属性

String name = field.getName();

// 获取属性值

Object value = field.get(obj);

// 指定的长度

int len = dataLen.value();

// 数据的长度

int vaLen = 0;

String data = null;

// 一个个赋值

if (null != value && value instanceof String) {

data = (String) value;

vaLen = data.length();

}

if (vaLen > len) {

warning ="对象:" + cls.getName() + "中存在不符合条件的参数,参数名:" + name + "参数值:" + data + "指定的数据长度:" + len + "实际长度:" + vaLen

+ "不符合条件";

System.out.print("对象:" + cls.getName() + "中存在不符合条件的参数,参数名:" + name + "参数值:" + data + "指定的数据长度:" + len + "实际长度:" + vaLen

+ "不符合条件");

return warning;

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

return warning;

}

}

实体类

public class Area{

@DataStringLen(3)//定义字段长度

private String areaValue;

}

方法校验

@RequestMapping("update")

@ResponseBody

public BasePageData update(Area area,

HttpServletRequest request,HttpServletResponse response){

BasePageData data = new BasePageData();

//方法校验

String validateParam= DataLenCheckHelper.checkAttributeValueLen(area);

if(!validateParam.equals("ok")){

data.setCode(WebResponseCode.FAIL);

data.setMsg(validateParam);

return data;

}

Integer upd = areaService.updateById(area);

data.setCode(WebResponseCode.SUCCESS);

data.setMsg("操作成功!");

return data;

}

java 验证int长度_java使用注解校验对象属性值数据长度相关推荐

  1. java 读取 excel 注释_java利用注解实现简单的excel数据读取

    搜索热词 实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Ret ...

  2. java获取实体类对象_java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

  3. java自定义注解实现校验对象属性是否为空

    前面学习了如何自定义一个注解:java如何优雅的自定义一个注解 下面来实战演示一下如何使用自定义注解做一些实际的功能.比如校验对象属性是否为空. 一.自定义一个NotNull注解 我们自定义一个Not ...

  4. 深入理解java注解,java的4个元注解,注解三要素——定义、使用及读取执行,深入了解注解的底层本质,通过反射自动、动态获取注解所有属性以及属性值

    1. 注解的定义 注解也是一种引用类型,编译后会生成 .class 字节码文件,作用就是为程序进行标识,不同注解能实现不同功能. 2. 注解的使用 3. 注解的读取执行 3.1 得不到注解信息,得到的 ...

  5. java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法

    /** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...

  6. java 将对象属性值快速复制到另一个对象上

    需求:将对象属性值快速复制到另一个对象上,忽略空值属性和id 直接上代码:BeanUtils 工具类 注意:如果需要关注复制性能的话,推荐用插件https://blog.csdn.net/qiaoda ...

  7. java验证身份证合法性_Java安全性,第2部分:身份验证和授权

    关于本教程 本教程是关于什么的? 也许没有比应用程序安全更重要的软件工程主题. 攻击是昂贵的,无论是来自内部还是外部,而且某些攻击可能会使软件公司承担赔偿责任. 随着计算机(尤其是Internet)技 ...

  8. validate验证长度 vue_vue input 输入校验字母数字组合且长度小于30的实现代码

    下面一段代码给大家分享vue input 校验字母数字组合且长度小于30,具体代码如下所示: validateJyh(glhm){//校验关联交易号 var reg = /^[A-Za-z0-9]{1 ...

  9. Java使用poi做加自定义注解实现对象与Excel相互转换

    引入依赖 maven <dependency><groupId>org.apache.poi</groupId><artifactId>poi</ ...

最新文章

  1. DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
  2. ZYNQ EMIO使用及可重用封装
  3. java集成redis集群_spring集成redis cluster详解
  4. android开发地址选择器,Android地址选择器 类似于京东的地址选择
  5. .Net Core微服务入门全纪录(完结)——Ocelot与Swagger
  6. 数论五之容斥——硬币购物,Gerald and Giant Chess,幸运数字,Sky Full of Stars,已经没有什么好害怕的了
  7. 高低层特征融合【转载】
  8. 1835 魔法猪学院
  9. MongoDB通配符索引
  10. 如何在Ubuntu下面识别Galaxy Nexus设备
  11. 计算机工程硕士论文全套,计算机工程硕士 论文写作注意事项
  12. 刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)
  13. Sql Server临时表获取链接数据库查询结果
  14. 如何从网站提取数据?
  15. vue微信、支付宝支付
  16. QT 操作 QLabel
  17. word自定义多级编号列表
  18. 计算的威力,智慧的传奇——Fabrice Bellard
  19. java实现模拟时钟表盘
  20. Mysql解决微信特殊符号昵称入库报错乱码

热门文章

  1. 基于SSM高校网上查分系统
  2. The GridView 'gv ' fired event RowEditing which wasn 't handled.
  3. Fluent Search,一款让Windows效率起飞的软件
  4. html——搜索结果简单ListView展示页面
  5. 车载多媒体音频协议转换器
  6. Eclipse中使用Hadoop集群模式开发配置及简单程序示例(Windows下)
  7. node-xlsx操作excel
  8. r74800u和r53500u对比评测
  9. 数据分析与可视化软件,社交软件用户画像分析
  10. elk搭建与简单的线上应用