当前对字段校验仅支持非空和字段长度的校验
FieldVaild注释
为了能保证对对象所有字段都有自定义配置是否校验,需要自定义注解
/**
* 校验注释
* @author TU
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface FieldVaild {
/**
* 中文名
*/
String chineseName();
/**
* 是否为空
*/
boolean isNotNull() default false;
/**
* 字段长度
*/
int valueLength() default 4000/3;
}
使用校验
在使用校验时,需要调用校验方法,将有字段校验注释的对象传入,能够自动对传入对象进行字段校验
public static Map<String, String> vaild(Object object) {
Map<String, String> map = new HashMap<>();
if (object == null) {
map.put("baseOption", "基础数据选择不能为空");
}else{
try {
Field[] fields = object.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
FieldVaild annotation = fields[i].getAnnotation(FieldVaild.class);
if (annotation.isNotNull()) {
fields[i].setAccessible(true);
Object o = fields[i].get(object);
if (o == null || "".equals(o.toString())) {
map.put(fields[i].getName(), annotation.chineseName() + "不能为空");
}
}
}
} catch (IllegalAccessException e) {
throw new ReflectException("基础校验失败" + e.getMessage());
}
}
return map;
}