Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bean Utils调用所有非字符串类型的setter_Java_Apache Commons Beanutils - Fatal编程技术网

Java Bean Utils调用所有非字符串类型的setter

Java Bean Utils调用所有非字符串类型的setter,java,apache-commons-beanutils,Java,Apache Commons Beanutils,我正在尝试使用hashmap调用bean的所有setter方法。键是属性名,值是我需要通过调用setter设置的实际值。下面的代码适用于字符串属性,但在int、double等非字符串属性上失败 for(Map.Entry<String, String> entry : settings.entrySet()){ try{ key = entry.getKey(); Prop

我正在尝试使用hashmap调用bean的所有setter方法。键是属性名,值是我需要通过调用setter设置的实际值。下面的代码适用于字符串属性,但在int、double等非字符串属性上失败

        for(Map.Entry<String, String> entry : settings.entrySet()){
        try{
                    key = entry.getKey();
                    PropertyUtils.setProperty(bean, key, entry.getValue());
        }
        catch(Exception ex)
        {
            LOGGER.debug("failed...."+ex.getMessage());     
        }
    }

问题是:如何避免这种异常,如何成功调用setter而不出现这种异常。

代码的问题是Map.Entry是作为两个字符串元组加载的,因此当将值传递给setProperty时,您要发送的是字符串,即使该方法需要int或float或其他值

还没有测试过这个,但是你可以试试

for(Map.Entry<String, String> entry : settings.entrySet()){
    try{
                key = entry.getKey();
                Class propertyClass = PropertyUtils.getPropertyDescriptor(bean, key).getPropertyType();
                if (propertyClass.getName().equals('Integer')) {
                    PropertyUtils.setProperty(bean, key, Integer.parseInt(entry.getValue()));
                } // and so with other types.
    }
    catch(Exception ex)
    {
        LOGGER.debug("failed...."+ex.getMessage());     
    }
}
for(Map.Entry:settings.entrySet()){
试一试{
key=entry.getKey();
类propertyClass=PropertyUtils.getPropertyDescriptor(bean,键).getPropertyType();
if(propertyClass.getName().equals('Integer')){
PropertyUtils.setProperty(bean、key、Integer.parseInt(entry.getValue());
}//其他类型也是如此。
}
捕获(例外情况除外)
{
LOGGER.debug(“失败…”+ex.getMessage());
}
}

那么,问题是什么?用问题详细信息编辑。Tnx
for(Map.Entry<String, String> entry : settings.entrySet()){
    try{
                key = entry.getKey();
                Class propertyClass = PropertyUtils.getPropertyDescriptor(bean, key).getPropertyType();
                if (propertyClass.getName().equals('Integer')) {
                    PropertyUtils.setProperty(bean, key, Integer.parseInt(entry.getValue()));
                } // and so with other types.
    }
    catch(Exception ex)
    {
        LOGGER.debug("failed...."+ex.getMessage());     
    }
}