java 验证int长度_java使用注解校验对象属性值数据长度
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使用注解校验对象属性值数据长度相关推荐
- java 读取 excel 注释_java利用注解实现简单的excel数据读取
搜索热词 实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Ret ...
- java获取实体类对象_java 获取实体类对象属性值的方法
在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...
- java自定义注解实现校验对象属性是否为空
前面学习了如何自定义一个注解:java如何优雅的自定义一个注解 下面来实战演示一下如何使用自定义注解做一些实际的功能.比如校验对象属性是否为空. 一.自定义一个NotNull注解 我们自定义一个Not ...
- 深入理解java注解,java的4个元注解,注解三要素——定义、使用及读取执行,深入了解注解的底层本质,通过反射自动、动态获取注解所有属性以及属性值
1. 注解的定义 注解也是一种引用类型,编译后会生成 .class 字节码文件,作用就是为程序进行标识,不同注解能实现不同功能. 2. 注解的使用 3. 注解的读取执行 3.1 得不到注解信息,得到的 ...
- java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法
/** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...
- java 将对象属性值快速复制到另一个对象上
需求:将对象属性值快速复制到另一个对象上,忽略空值属性和id 直接上代码:BeanUtils 工具类 注意:如果需要关注复制性能的话,推荐用插件https://blog.csdn.net/qiaoda ...
- java验证身份证合法性_Java安全性,第2部分:身份验证和授权
关于本教程 本教程是关于什么的? 也许没有比应用程序安全更重要的软件工程主题. 攻击是昂贵的,无论是来自内部还是外部,而且某些攻击可能会使软件公司承担赔偿责任. 随着计算机(尤其是Internet)技 ...
- validate验证长度 vue_vue input 输入校验字母数字组合且长度小于30的实现代码
下面一段代码给大家分享vue input 校验字母数字组合且长度小于30,具体代码如下所示: validateJyh(glhm){//校验关联交易号 var reg = /^[A-Za-z0-9]{1 ...
- Java使用poi做加自定义注解实现对象与Excel相互转换
引入依赖 maven <dependency><groupId>org.apache.poi</groupId><artifactId>poi</ ...
最新文章
- DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
- ZYNQ EMIO使用及可重用封装
- java集成redis集群_spring集成redis cluster详解
- android开发地址选择器,Android地址选择器 类似于京东的地址选择
- .Net Core微服务入门全纪录(完结)——Ocelot与Swagger
- 数论五之容斥——硬币购物,Gerald and Giant Chess,幸运数字,Sky Full of Stars,已经没有什么好害怕的了
- 高低层特征融合【转载】
- 1835 魔法猪学院
- MongoDB通配符索引
- 如何在Ubuntu下面识别Galaxy Nexus设备
- 计算机工程硕士论文全套,计算机工程硕士 论文写作注意事项
- 刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)
- Sql Server临时表获取链接数据库查询结果
- 如何从网站提取数据?
- vue微信、支付宝支付
- QT 操作 QLabel
- word自定义多级编号列表
- 计算的威力,智慧的传奇——Fabrice Bellard
- java实现模拟时钟表盘
- Mysql解决微信特殊符号昵称入库报错乱码