使用BeanUtilsBean从请求填充对象中的HashMap

时间:2013-02-22 17:12:26

标签: java http request javabeans populate

我当前的应用程序使用这种函数从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 =值
  • prefixPath.myBusinessDTOAttribute [键] =值

但它们都不起作用。

这甚至可能吗?如果是的话,怎么样?

1 个答案:

答案 0 :(得分:0)

不是100%肯定,而且我也只是用beanutils弄湿了脚,但是从javadocs听起来你的想法并不支持:

  

“此方法使用Java反射API来识别相应的   “属性设置器”方法名称,并处理setter参数   type String,boolean,int,long,float和double。此外,   也可以识别这些类型的数组 setter(或相应的基元类型)。“

所以,数组,但没有地图。

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