得到了map数值,封装不到bean内
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了得到了map数值,封装不到bean内相关的知识,希望对你有一定的参考价值。
是不是 beanutil这个类底层方法有问题?
参考技术A有可能的原因:
BeanUtils.populate()方法没有设置正确。
ReData类中重载的toString方法中没有设置正确。
这两个方法的代码都没有,所以没法判断。
另外:类名一般都是以大写字母开头,allxmlUtil我还以为是个变量呢。
追问 改写了一下 map里面的数值还是封装不进去
你把BeanUtils.populate()方法的代码和TestBean.toString()的代码贴出来呀
对象属性封装到map中
package cn.itsource.crm.utils; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; import org.springframework.beans.BeanUtils; public class CommUtil { /** * 把指定的复杂对象属性,按照指定的内容,封装到新的map中 * @param source 目标对象 * @param ps 需要封装到map中的属性 * @return */ public static Map<String, Object> obj2map(Object source, String[] ps) { Map<String, Object> map = new HashMap<>(); if (source == null) return null; if (ps == null || ps.length < 1) { return null; } for (String p : ps) { PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor( source.getClass(), p); if (sourcePd != null && sourcePd.getReadMethod() != null) { try { Method readMethod = sourcePd.getReadMethod(); if (!Modifier.isPublic(readMethod.getDeclaringClass() .getModifiers())) { readMethod.setAccessible(true); } Object value = readMethod.invoke(source, new Object[0]); map.put(p, value); } catch (Exception ex) { throw new RuntimeException( "Could not copy properties from source to target", ex); } } } return map; } }
以上是关于得到了map数值,封装不到bean内的主要内容,如果未能解决你的问题,请参考以下文章
数值无法使用 Dockerfile #27284 设置为 env