package net.csdn.validate.impl; import net.csdn.jpa.model.JPABase; import net.csdn.validate.BaseValidateParse; import net.csdn.validate.ValidateHelper; import net.csdn.validate.ValidateResult; import java.lang.reflect.Field; import java.util.Collection; import java.util.Iterator; import java.util.List; /** * BlogInfo: WilliamZhu * Date: 12-7-5 * Time: 上午7:38 */ public class Associated extends BaseValidateParse { @Override public void parse(final Object target, final List<ValidateResult> validateResultList) { final Class clzz = target.getClass(); iterateValidateInfo(clzz, ValidateHelper.associated, new ValidateIterator() { @Override public void iterate(String targetFieldName, Field field, Object info) throws Exception { List<String> listFields = (List) info; for (String wow : listFields) { Field objField = target.getClass().getDeclaredField(wow); objField.setAccessible(true); Object obj = objField.get(target); if (obj instanceof Collection) { Collection objs = (Collection) obj; Iterator iterator = objs.iterator(); while (iterator.hasNext()) { JPABase member = (JPABase) iterator.next(); if (member == null) continue; if (!member.valid()) { validateResultList.addAll(member.validateResults); } } } else/*单个对象*/ { JPABase member = (JPABase) obj; if (member == null) continue; if (!member.valid()) { validateResultList.addAll(member.validateResults); } } } } }); } }