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( ) );

ほとんどすべてのユースケースでうまく機能しますが、私はまだ 1 つに固執しており、リクエストパラメーターから 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[キー]=値

しかし、どれも機能しません。

これは可能ですか?はいの場合、どのように?

4

1 に答える 1

0

100%確実ではなく、beanutils にも足を踏み入れているだけですが、javadocs からは、あなたのアイデアはサポートされていないようです:

「このメソッドは、Java リフレクション API を使用して、対応する「プロパティ セッター」メソッド名を識別し、String、boolean、int、long、float、および double 型のセッター引数を処理します。さらに、 これらの型の配列セッター (または対応するプリミティブタイプ)も識別できます。」

したがって、配列はありますが、マップはありません。

しかし、2 つの同期された (Java の意味ではない) 配列を操作して、beanutils を使用してそれらを別々の変数に個別に設定することもできます。独自のゲッターとセッターを持つ 2 番目の配列を作成すると、それらをマップに自動的にマージするユーティリティ メソッドを Bean に含めることができます。

于 2013-12-13T03:37:39.553 に答える