【问题标题】:Populating HashMap in object from request with BeanUtilsBean使用 BeanUtilsBean 从请求中填充对象中的 HashMap
【发布时间】:2018-09-24 22:24:49
【问题描述】:

我当前的应用程序使用这种函数从 http 请求填充一个简单的 java 对象:

// request is an instance of org.apache.catalina.connector.RequestFacade
// myObject is an instance of MyBusinessDTO
org.apache.commons.beanutils.BeanUtilsBean.populate( myObject, request.getParameterMap( ) );

它几乎适用于任何用例,但我仍然坚持使用我的请求参数填充 HashMap。

我要填充的对象如下:

public class MyBusinessDTO extends BusinessDTO
{

    private Map<String, Object> listeFormsChecked = new HashMap<String, Object>( );


    /**
     * @return the listeFormsChecked
     */
    public Map<String, Object> getListeFormsChecked( )
    {
        return listeFormsChecked;
    }



    /**
     * @param listeFormsChecked the listeFormsChecked to set
     */
    public void setListeFormsChecked( Map<String, Object> listeFormsChecked )
    {
        this.listeFormsChecked = listeFormsChecked;
    }
}

我已经尝试过我的请求,例如:

  • prefixPath.myBusinessDTOAttribute.key=value
  • prefixPath.myBusinessDTOAttribute[key]=value

但它们都不起作用。

这甚至可能吗?如果是,如何?

【问题讨论】:

    标签: java http request javabeans populate


    【解决方案1】:

    不是 100% 确定,我也只是用 beanutils 弄湿了我的脚,但从 javadocs 看来,您的想法不被支持:

    "该方法使用Java反射API来识别对应的 “property setter”方法名称,并处理 setter 参数 类型 String、boolean、int、long、float 和 double。此外, 也可以识别这些类型(或相应的原始类型)的 array 设置器。”

    所以,数组,但没有映射。

    但是您可以尝试使用两个同步的(不是 Java 意义上的)数组,并使用 beanutils 将它们独立地设置在单独的变量中 - iow 您的键将是一个具有自己的 getter 和 setter 的数组,以及 vals将是具有自己的 getter 和 setter 的第二个数组,然后您可以在 bean 中有一个实用方法,自动将它们合并到一个映射中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-23
      • 2020-06-10
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多