文档章节

JAVA 注解验证字段(例子)

kongjun
 kongjun
发布于 2015/06/04 15:09
字数 145
阅读 40
收藏 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
粉丝 8
博文 98
码字总数 40811
作品 0
杭州
程序员
私信 提问
创建你自己的 Java 注解类

如果你已经在使用Java编程,并且也使用了任何像Spring和Hibernate这样的流行框架,那么你应该对注解的使用非常地熟悉。使用一个现有框架工作的时候,通常使用它的注解就够了。但是,你是不是...

oschina
2014/07/22
11K
31
Scala 比 Java 还快?

通常Scala被认为比Java要慢,特别是用于函数式编程时。本文会解释为什么这个被广泛接受的假设是错误的。 数据验证 编程中一个常见的问题是数据验证。即我们要确保所有得到的数据处于正确的结...

oschina
2014/06/22
24.1K
48
Java学习笔记(八)——数据校验(Hibernate validation)

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

Bug生活2048
2018/05/27
0
0
Java如何快速获取类附带的注解

作者: 一字马胡 转载标志 【2018-01-04】 更新日志 Java技术干货分享 如何快速获取或者判断一个类是否有某个注解呢?可以使用对象的Class信息来获取,下面是一个例子: 在上面的例子中,has...

疼丸李白
2018/01/04
0
0
Android中OrmLite持久化

http://ormlite.com/javadoc/ormlite-core/doc-files/ormlitetoc.html#SECContents OrmLite提供了一些轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销功能。...

xiahuawuyu
2012/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LIst的逆向遍历

public class list_demo { public static void main(String[] args) {// TODO Auto-generated method stub List list=new ArrayList<>(); list.add("a"); list.add("b");......

南桥北木
33分钟前
1
0
Linux下端口转发工具rinetd介绍

linux下简单好用的工具rinetd,实现端口映射/转发/重定向,针对TCP协议,不支持UDP。 官网地址 http://www.boutell.com/rinetd 里面介绍及使用齐全。 使用场景举例: 阿里云内网Redis连接问题...

ouhoo
45分钟前
4
0
Oracle学习日志-5(算数运算符,比较运算符和逻辑运算符)

因为有编程基础,所以对于这一章还是很好理解,只需要注意对NULL的运算。 操作的表格 算数运算符 查询商品名字和商品售价,并商品售价乘2 SELECT product_name,sale_price * 2 AS "sale_pri...

白话
58分钟前
1
0
搜索引擎(Lucene介绍、分词器详解)

Lucene介绍 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简...

这很耳东先生
今天
4
0
quartz详细介绍

quartz常用api Scheduler 调度程序交互的主要API。 Job 希望由调度程序执行的组件实现的接口。 JobDetail 用于定义作业的实例。 JobDataMap 可以包含不限量的序列化数据,在job运行的时候可以...

大笨象会跳舞吧
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部