原因
使用Controller的形参及注解@ModelAttribute来接收页面传来的数据,但是该形参类型中的属性过多,不想一一判断,就想有没有偷懒的方法。
搜索一番,找到一个不错的思路:利用反射获取所有字段,再判断内容是否为null。
初步代码如下
/*** 注意,如果order是null,也返回true。
*
*@paramorder
*@return
*/
private booleanisOrderAllFieldNull(Order order){if(order == null){return true;
}
Class cls = Order.class;
Field[] fields=cls.getDeclaredFields();for(Field field : fields){try{field.setAccessible(true);if(field.get(order)!=null){return false;
}
}catch(IllegalAccessException e){
}
}return true;
}
问题
上面的代码有不少问题,例如没考虑排除serialVersionUID,甚至没考虑基本类型是有默认值的,更没考虑Order中的属性可能设有默认值。。。
貌似离题万里了,但是因为这里需要的是判断页面有无传值进来,而不是真的判断Order对象的内容是否为空!
就是说,前面的出发点错了!囧