Java Bean Utils调用所有非字符串类型的setter
我正在尝试使用hashmap调用bean的所有setter方法。键是属性名,值是我需要通过调用setter设置的实际值。下面的代码适用于字符串属性,但在int、double等非字符串属性上失败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
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());
}
}