2012-04-11 12 views
2

私は最初のSpring MVCコントローラを実装しようとしています。これはSpringのドキュメント、チュートリアル、 "Spring in Action"の本に従っています。Spring MVCコントローラでのモデルの扱い

今私は疑問を持っています:コントローラーメソッドを実装すると、モデルの扱いに違いがあります。 Map<String, Object>Modelオブジェクト、またはModelAndViewオブジェクトを使用することがあります。

オブジェクトの使用と使用の違いはどちらですか? どちらか一方を選択する理由は何ですか?

答えて

2

ModelAndViewには、モデルとビューの名前が含まれています。 ModelMapは、契約上、モデルに関する情報しか含んでいません。

モデルとビューでは、ビュー名を明示的に設定できます。

モデルを設定してコントローラで文字列を返すだけの場合、ビュー名はリクエストuriから推測されます。

0

Spring docs: '通常、ModelAndViewインスタンスはビュー名とモデルマップで構成され、Bean名と対応するオブジェクト(参照データを含むコマンドやフォームなど)を含みます。'フォームからエントリを収集したり、何かを表示したりする必要がある場合は、オブジェクトをビュー(または背面)に転送する方法です。

----例 ModelAndViewモデル= new ModelAndView(); model.addObject(path);
model.addObject( "user"、user);
model.addObject( "greeting"、service.getMessage());

リターンモデル;

// VIEWNAME、ユーザ豆、MSGビーン

//スプリングDOC

パブリックインターフェースコントローラ{

/** 
* Process the request and return a ModelAndView object which the DispatcherServlet 
* will render. 
*/ 
ModelAndView handleRequest(
    HttpServletRequest request, 
    HttpServletResponse response) throws Exception; 

}

0

のModelAndViewは、モデルとビューの両方のためのホルダでありますWeb MVCフレームワークで。これらは完全に異なることに注意してください。このクラスは、コントローラが単一の戻り値でモデルとビューの両方を返すことを可能にするためだけに両方を保持しています。

Dispatcherによって解決されるハンドラによって戻されるモデルおよびビューを表します。ビューは、ViewResolverオブジェクトによって解決される必要があるString View名の形式を取ることができます。

代わりに、ビューオブジェクトを直接指定することもできます。このモデルはMapであり、名前でキー入力された複数のオブジェクトを使用できます。

関連する問題