1

Map<String, String[]>Javaのオブジェクトに関するユーザー入力を変換したい。より具体的には、HttpServletRequest のパラメーターを任意のドメイン オブジェクトのフィールドに変換したいと考えています。

私はこのようなものが欲しいです:

Domain d = Converter.convert(params, new Domain());

マップ エントリの値である文字列配列に複数の要素がある場合は、リストまたは配列に変換する必要があります。おそらく、日付と通貨の変換にはロケールを考慮する必要があります。そして、変換エラーのリストがあればいいでしょう。

そのようなコンバーターを備えたライブラリはありますか?

それを「コンバーター」と呼びますか?「データバインディング」と呼ばれることが多いと思いますが、モデル値を GUI 要素にバインドすることに関連しているため、それは私の意見では間違った用語です。

4

2 に答える 2

1

Web フレームワークがこの機能をサポートしていない場合は、
http: //commons.apache.org/beanutils/ を参照してください。特に、必要な目的が似ている (おそらくまったく同じ) クラスを持つ beanutils パッケージがあります。

より成熟したフレームワークへの切り替えを検討することもできます;-)

于 2010-06-22T09:07:18.403 に答える
0

これは単なる例であるため、このプレーンコードは使用しないでください。かなりの例外処理とマップのループを追加する必要があります。しかし、一般的には次のような考え方です。

void putValue(String name, String value, Object object) throws Exception {
    String setterName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
    Method m = object.getClass().getMethod(setterName, String.class);
    if (m!=null) {
        m.invoke(object, value);
    }
}

このコードは、パラメーター名'name'が与えられると、メソッドを見つけsetName(String name)て、与えられた値でそれを呼び出そうとします。

于 2010-06-22T08:55:25.153 に答える