我已经试过的BeanUtils还有的PropertyDescriptor是因为我没有在类的信息被传递给我的方法。我甚至不知道传递的属性的数据类型,因此设置值变得困难。我知道BeanUtils应该为属性自动进行转换并进行设置,但它并没有为我保存数据。所以最后,我不得不依靠获得领域。这是我做的:
Field[] fields = className.getDeclaredFields();
for (int i=0; i<fields.length ;i++)
{
String element = fields[i].getName();
String propertyType = fields[i].getType().getName();
fields[i].setAccessible(true);
if(propertyType.equalsIgnoreCase("java.lang.Integer"))
{
fields[i].set(mypojoObj, Integer.parseInt(parameterValue));
}
else
{
fields[i].set(mypojoObj, parameterValue);
}
}
我做了一个类似的开关大小写转换所有属性类型为正确的类型。当从页面中获取时,request.getParameter(paramname)总是返回String,所以这个转换对我有用。直接数据转换的任何更好的选择将非常有帮助。
只为无知(我),为什么不只是调用someBean.setName(“弗雷德”)? – simpatico 2011-05-02 12:44:32
@simpatico对于一个已知的财产,显然,是的。但是如果你想管理对许多不同类型对象的许多不同属性的访问,请使用bean属性 – 2011-05-02 12:48:11
谢谢。我购买它,如果属性设置在一个文件加载,然后只调用BeanUtils.populate(someBean,属性); 但我从来没有在实践中调用set(“name”,“Fred”),而我可以直接调用setName(“Fred”)(我没有你的只是示例代码)。 – simpatico 2011-05-02 13:30:27