文档章节

JAVA 注解验证字段(例子)

kongjun
 kongjun
发布于 2015/06/04 15:09
字数 145
阅读 38
收藏 0

注解类

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented  
@Inherited
public @interface Validate {
	
	public Class<?> type() default String.class;

}

Util类

public static String validate(Object param) {

		for (Field f : param.getClass().getDeclaredFields()) {

			if (f.isAnnotationPresent(Validate.class)) {

				Validate v = f.getAnnotation(Validate.class);
				Class<?> type = v.type();
				f.setAccessible(true);
				Object obj = null;
				try {
					obj = f.get(param);
				} catch (IllegalArgumentException e) {
					LOG.error("注解异常",e);
				} catch (IllegalAccessException e) {
					LOG.error("注解异常",e);
				}
				if(obj==null)
					return f.getName()+"不能为空";
				if(StringUtils.isBlank(obj.toString()))
					return f.getName()+"不能为空";
				String vType = type.getName();
				if("String".equals(type))
					continue;
				String val = obj.toString();
				boolean bool = false;
				try {
					if("java.lang.Integer".equals(vType)){
						Integer.parseInt(val);
					}else if("java.lang.Long".equals(vType)){
						Long.parseLong(val);
					}else if("java.lang.Byte".equals(vType)){
						Byte.parseByte(val);
					}
				} catch (NumberFormatException e) {
					bool = true; 
				}
				if(bool){
					return f.getName()+"类型不正确";
				}
			}

		}

		return null;
	}


© 著作权归作者所有

共有 人打赏支持
kongjun
粉丝 7
博文 97
码字总数 40140
作品 0
杭州
程序员
Java学习笔记(八)——数据校验(Hibernate validation)

公司转java开发也有一段时间了,在实际开发过程中还是会遇到一些问题的,本篇主要记录下接口服务中参数验证相关的开发过程和一些知识点。 在接口服务开发中,难免会校验传入方的参数校验,尤...

Bug生活2048
05/27
0
0
Java SE Annotations API学习

注解,元数据的一种形式,提供关于程序不是程序本身的一部分数据。注解对代码的操作没有直接影响。 注解有多用途,如: a、用于编译信息。通过编译器检测错误or抑制警告 b、编译时和部署时的...

Rksi5
2014/04/08
0
0
Scala笔记整理(三):Scala面向对象—类详解1

[TOC] getter和setter 简单类和无参方法 需要说明的是,官方给出的参考资料对于这方面讲解得十分详细,目前入门来说,不需要达到这样的理解,只需要可以进行开发即可,这一部分我给出的是官方...

xpleaf
04/20
0
0
SpringBoot基础教程2-1-7 数据验证-基础数据验证

概述 数据验证是企业应用开发中必备可少的环节,通常如果使用在业务代码中写死验证逻辑,会导致验证逻辑与业务逻辑耦合。 2. 不合理的验证方式 上述代码,如果需要修改验证,不为空且长度大于...

Mkeeper
07/30
0
0
伪共享和缓存行填充,Java并发编程还能这么优化!

前言 关于伪共享的文章已经很多了,对于多线程编程来说,特别是多线程处理列表和数组的时候,要非常注意伪共享的问题。否则不仅无法发挥多线程的优势,还可能比单线程性能还差。随着JAVA版本...

技术小能手
07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python标准输入输出

input() 读取键盘输入 input() 函数从标准输入读入一行文本,默认的标准输入是键盘。 input 可以接收一个Python表达式作为输入,并将运算结果返回。 print()和format()输出 format()输出...

colinux
18分钟前
0
0
Python 核心编程 (全)

浅拷贝和深拷贝 1.浅拷贝:是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容。相当于把变量里面指向的一个地址给了另一个变量就是浅拷贝,而没有创建一个新的对象,如a...

代码打碟手
30分钟前
0
0
PHP 对象比数组省内存?错!数组比对象省内存?错!

刚刚一个群里有人引出了 PHP 数组和对象占用内存谁多谁少的问题。我想起之前我好像也测试过这个问题,和群里人说的对象比数组节省内存的结论相反,我得出的是数组比对象节省内存。 但今天,我...

宇润
46分钟前
1
0
memcached命令行及其用法

21.5 memcached命令行 创建数据 yum install -y telnet 利用telnet命令连接memcached数据库 telnet 127.0.0.1 11211 #写入数据 set key2 0 30 212STORED 这个是错误的示范,因为0 30 已经...

lyy549745
46分钟前
0
0
Maven私服

Maven私服 一、简介 当多人项目开发的时候,尤其聚合项目开发,项目和项目之间需要有依赖关系,通过maven私服,可以保存互相依赖的jar包,这样的话就可把多个项目整合到一起。 如下图: Inst...

星汉
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部