春3参照たちを教える:メソッド引数レベルで@ModelAttributeアノテーションの意味は?
あなたはメソッド パラメータにそれを配置すると、
@ModelAttribute
が特定、 注釈付きメソッドのパラメータ
に モデル属性をマッピングし、私はこのことを理解していません私は確かにモデルのオブジェクトのエイリアス(戻り値の型としてModelMap
を使用している場合はキー値)が要求ハンドラメソッドの実行後にビューに渡されたことを確認しています。したがって、要求ハンドラメソッドが実行されると、モデルオブジェクトの名前をメソッドパラメータにマップすることはできません。
この矛盾を解決するために、私はstackoverflowに行き、this詳細な例を見つけました。 例の著者は言った:「personAttribute」モデルは、それが思わ JSP
からコントローラに渡され た
//、彼は春の参照に魅了され...
私は彼のサンプルアプリケーションを自分の環境に配備し、メソッド
MainController.saveEdit()
から@ModelAttributeアノテーションを厳しくカットしました。結果として、アプリケーションは変更なしで動作します。だから結論:@ModelAttribute
注釈は、Webフォームのフィールド値を引数のフィールドに渡す必要はありません。次に、私は質問に固執しました:@ModelAttribute
注釈の平均は何ですか? View内のモデルオブジェクトのエイリアスを設定することが唯一の手段である場合は、ModelMap
にオブジェクトを明示的に追加するよりも、なぜこの方法が優れていますか?引数が注釈されていない場合は、そのタイプ(すなわち、それはHttpServletRequest
、ModelMap
などはありません)、それは@ModelAttribute
-annotated引数のように扱われています特別な意味を持ちません -