文字列をJavaオブジェクトに自動的に変換します
-
29-09-2019 - |
質問
次のようなユーザー入力を変換したいです 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)
指定された値でそれを呼び出します。
所属していません StackOverflow