在ACTION中想通过反射获取struts自动填充对象的属性和值,为什么获取的和预期不一样
这是我的action:
这是方法调用:
这是具体的checkAtrr方法:
public static void checkAttr(Object vo,String errorMsg,HashMap<String, String> extra) throws IllegalInputException{
Class<? extends Object> voClass = vo.getClass();
Field[] field=voClass.getDeclaredFields();
if(errorMsg==null){
errorMsg="你的输入包含非法字符,请重新输入!";
}
for(Field attr: field){
attr.setAccessible(true);
Object value=null;
try {
value=attr.get(vo);//获取属性值!!
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("name:"+attr.getName()+" value:"+value);
//校验是否有要被区别对待的属性
/*if(extra!=null&&extra.get(attr.getName())!=null){
if(value!=null&&checkRegExp(value.toString(),extra.get(attr.getName()))){
System.out.println("name:"+attr.getName()+" value:"+value.toString());
throw new IllegalInputException(errorMsg);
}
}else{
if(value!=null&&checkRegExp(value.toString(),REGEX_INPUT)){
System.out.println("name:"+attr.getName()+" value:"+value.toString());
throw new IllegalInputException(errorMsg);
}
}*/
}
}
这是debug时,cust的情况:
这是log out输出情况,获取的不是具体的属性和值:
我猜想应该是spring的动态代理原因,是因为我反射的代理类吗?,怎么解决