PropertyUtils.isReadable()使用出现的bug

今天做excel 下载的时候 用到了PropertyUtils.isReadable()这个方法;

https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/PropertyUtils.html

下面的和链接里面说的一样

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值