得到了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内的主要内容,如果未能解决你的问题,请参考以下文章

matlab的solve函数得不到数值解

学会使用ant design封装一个锚点组件

学会使用ant design封装一个锚点组件

数值无法使用 Dockerfile #27284 设置为 env

BeanUtils.populate(bean,map)方法可以封装map数据到javabean中,但是有个问题

Map型数值在oracle数据库里如何存储