Spring 2.5は受信リクエストデータをModelAttributeコマンドにどのようにマッピングしますか?
-
03-07-2019 - |
質問
Spring 2.0を使用し、現在はSpring 2.5を使用しています。Spring2.5は、Webコントローラに関する限り、非常に簡単です。 2.0では、コマンドクラスを設定し、それに応じてそのコマンドオブジェクトを設定するために使用されるAbstractFormControllerを設定する必要があるという疑問が頭に浮かびます。 Spring 2.5ではそれを行わないので、どのクラスを使用するのかがどのようにわかるのですか? @ModelAttribute(" command")に注釈を付けたパラメーターのタイプに依存しますか?
「はい」の場合、「ユーティリティ」をお知らせください。 HttpRequestとクラス名(またはClassオブジェクト)を渡すことができる正確なメカニズムを提供し、入力されたオブジェクトを返すクラス!
私の質問に答えてください。
事前に感謝します。
解決
Web MVCアノテーションバインディングは、最終的に依存しています
org.springframework.beans.AbstractPropertyAccessor
2つの具体的な実装があります:
org.springframework.beans.BeanWrapperImpl org.springframework.beans.DirectFieldAccessor
両方とも、プロパティを設定するターゲットとなるJavaオブジェクトを受け入れます。
最初のBeanWrapperImplはJavaオブジェクトのセッター/ゲッターメソッドを使用し、もう1つはフィールドを直接設定します。 両方とも、メソッド/フィールドがパブリック/アクセス可能であることを確認し、そうでない場合は、リフレクションのsetAccessible(true)を使用して設定できることを確認します。
Web MVCから、AbstractPropertyAccessorのインスタンスが作成され、HttpRequestのパラメーターマップがAbstractPropertyAccessor#setPropertyValuesに渡されます。
呼び出し後、Javaオブジェクトにはマップにあるものがすべて入力されます