1

我当前的应用程序使用这种函数从 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

但它们都不起作用。

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

4

1 回答 1

0

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

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

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

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

于 2013-12-13T03:37:39.553 回答