/**
* @desc 判断字段在相应模板字段中是否必传 true:验证失败 false:验证通过
* @param info 传递的信息
* @param templateList 模板字段
* @return
*/
public static boolean check(TalentInfoVO info, List<TalentTemplateExpand> templateList){
// 获取模板字典,判断是否传值
Map<String, TalentTemplateExpand> map = new HashMap<>();
templateList.stream().forEach(t->{
map.put(t.getFieldCode(), t);
});
Class cl = info.getClass();
List<Field> allFields = new ArrayList<>(100);
allFields.addAll(Arrays.asList(cl.getDeclaredFields()));
// 获取所有父类的字段, 父类中的字段需要逐级获取
Class clazzSuper = cl.getSuperclass();
// 如果父类不是object,表明其继承的有其他类。 逐级获取所有父类的字段
while (clazzSuper != Object.class) {
// 获取子类字段
allFields.addAll(Arrays.asList(clazzSuper.getDeclaredFields()));
clazzSuper = clazzSuper.getSuperclass();
}
for (Field field : allFields) {
// 设置字段可访问, 否则无法访问private修饰的变量值
field.setAccessible(true);
try {
// 获取字段名称
String fieldName = field.getName();
// 获取指定对象的当前字段的值
Object fieldVal = field.get(info);
if(fieldVal==null){
// 对获取的字段值做相应业务处理
TalentTemplateExpand templateExpand = map.get(fieldName);
if (templateExpand != null) {
if ("1".equals(templateExpand.getMustPassStatus())) {
return true;
}
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return false;
}
学习地址:https://blog.csdn.net/changerzhuo_319/article/details/88377924