自定义服务器检验 工具类

来源:互联网 发布:怎么下载facebook软件 编辑:程序博客网 时间:2024/05/05 09:13
在做项目开发过程中,我们经常是会在前端做一些数据的检验再将数据传送到服务器端,但是仅有前端检验师往往是不够的,为了增加数据的正确性我们还需要在服务器端做检验来保证这是我们想要的数据。上次一篇做spring的日志记录,用到了自定义注解然后反射获取感觉很是方便,可抽离性很好,这里也是用到同样的方法,来实现~

1.建一个检验注解,用来标注需要检验的属性

package com.demo.validation.utils;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Validation {}

2.检验工具类

package com.demo.validation.utils;import java.lang.annotation.Annotation;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;/** * 检验类         * @version 1.0 * 2016年1月16日 创建文件 */public class ValidateUtils {    private ValidateUtils() {    }    public static <T> List<String> validate(T t){        Class clazz=t.getClass();        List<String> errorList=new ArrayList<String>();        if(!clazz.getSuperclass().getSimpleName().equals("Object")){            validate(t);        }        Field[] fields=clazz.getDeclaredFields();        for(Field field:fields){            Annotation[] annotations=field.getAnnotations();            if(annotations!=null){                try {                    field.setAccessible(true);                    Object fieldValue = field.get(t);                    for(Annotation annotation:annotations){                        String aName=annotation.annotationType().getSimpleName();                        try {                            switch(ValidateType.valueOf(aName)){                            case RequiredField:                                if(!validateRequiredField(fieldValue)) {                                    errorList.add(((RequiredField)annotation).message());                                }                                break;                            }                        } catch (Exception e) {                            // TODO: handle exception                        }                    }                } catch (IllegalArgumentException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                } catch (IllegalAccessException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }        return errorList;    }    /**     * 判断是否为空      * @param fieldValue      * @return     */    public static boolean validateRequiredField(Object fieldValue){        return fieldValue instanceof String?fieldValue!=null&&!fieldValue.equals(""):fieldValue!=null;     }}

其他代码我就不附上了,具体代码下载就可以了
下载地址

0 0