質問

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

このようなものが欲しい:

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

文字列アレイに複数の要素がある場合(マップエントリの値)、リストまたは配列に変換する必要があります。たぶん、ロケールは日付と通貨の変換で考慮されるべきです。また、変換エラーのリストがいいでしょう。

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

それを「コンバーター」と呼びますか?それはしばしば「データバインディング」と呼ばれていると思いますが、それは私のオピニオンの間違った用語です。なぜなら、それはGUI要素へのバインディングモデル値に関連しているからです。

役に立ちましたか?

解決

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

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

他のヒント

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

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

パラメーター名が与えられたこのコード '名前' 方法を見つけようとします setName(String name) 指定された値でそれを呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top