今天做excel 下载的时候 用到了PropertyUtils.isReadable()这个方法;
下面的和链接里面说的一样
public static boolean isReadable(Object bean,
String name)
true如果指定的属性名称标识指定bean上的可读属性,则返回; 否则返回 false。
详情请参阅PropertyUtilsBean。
参数:
bean - 要检查的豆(可能是一个 DynaBean
name - 待评估的物业名称
返回:
true 如果属性可读,否则 false
抛出:
IllegalArgumentException- 如果bean 还是name现在null
以来:
BeanUtils 1.6
也可以看看:
PropertyUtilsBean.isReadable(java.lang.Object, java.lang.String)
我在使用时出现了一个问题
private <T> Map<String, String> getPropertyMap(T t) {
Map<String, String> propertyMap = new HashMap<String, String>();
for (Field f : t.getClass().getDeclaredFields()) {
System.out.println(f.getName());
if (!**PropertyUtils.isReadable(t, f.getName())**) {
continue;
}
Title tt = f.getAnnotation(Title.class);
if (null == tt) {
continue;
}
propertyMap.put(tt.value(), f.getName());
}
return propertyMap;
}
PropertyUtils.isReadable(t, f.getName())
调用这个方法是出现了一个问题; 我通过反射获得model类变量里有三个Long 值
/**
* 预算金额
*/
@Title("预算金额")
@Getter
@Setter
private long yAmount;
/**
* 列支金额
*/
@Title("列支金额")
@Getter
@Setter
private long lAmount;
/**
* 预算余额
*/
@Title("预算余额")
@Getter
@Setter
private long amount;
然而 当yAmount和lAmount值进入isReadable方法时会进入 continue;而amount则不会;
在找寻源码解决时也没能解决;
最后的解决方式将原有的
/**
* 预算金额
*/
@Title("预算金额")
@Getter
@Setter
private long yCountAmount;
/**
* 列支金额
*/
@Title("列支金额")
@Getter
@Setter
private long lCountAmount;
两个变量加长 然后就可以正常使用了;
耗费了一下午 也没弄清楚为什么;
———-编辑8/23
今天下载的时候又没出来;
然后把他们首字母大写后发现也可以
/**
* 预算金额
*/
@Title("预算金额")
@Getter
@Setter
private long YAmount;
/**
* 列支金额
*/
@Title("列支金额")
@Getter
@Setter
private long LAmount;