2011-09-12 3 views

答えて

21

ドキュメントに記載されているとおり、BeanNameViewResolverは、ViewをBeanとして宣言します。通常は、いくつかの特殊目的のビューのために必要です。

たとえば、コントローラの1つがExcelスプレッドシートをレンダリングするとします。だから、あなたはAbstractExcelViewをサブクラス化し、モデル値に基づいて、スプレッドシートレンダリングするために、カスタム・ロジックを実装します。

public class MyExcelView extends AbstractExcelView { ... } 

をし、Beanとして宣言:

<bean id = "myExcelView" class = "MyExcelView" /> 

その後BeanNameViewResolverを宣言すると、コントローラで使用できるようにします:コントローラが表示名myExcelViewModelAndViewを返すと、スプレッドシートがレンダリングされます。

BeanNameViewResolverは通常、「通常の」ビュー(BeanNameViewResolverビューを見つけることができない場合は、他のリゾルバはそれを見つけようとするように)を扱ういくつかの他のビューリゾルバと組み合わせて使用​​されています

確か
<bean class = "...BeanNameViewResolver"> 
    <property name = "order" value = "0" /> 
</bean> 

<bean class = "...InternalResourceViewResolver"> 
    <property name = "order" value = "1" /> 
    ... 
</bean> 
+0

+1は私より速く、いくつかの詳細を持って私のブロブdoesntは持っています:) –

+0

+1良い説明のために。いくつかの質問:1)beannameviewresolverはスレッドセーフである必要がありますか? 2)内部リソースビューリゾルバはスレッドセーフですか? – shrini1000

+0

非常に良い説明 – Krishna

7

ドキュメントは素晴らしいものではありません。

春mvcのビューリゾルバはビュー名からビューに変換するBeanです。

ビュー名は単純な文字列です。これは、ModelAndViewオブジェクト内のコントローラのhandleRequest()メソッドによって返されます。

ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) { 
    .... 
    return ModelAndView("thisIsTheViewName", ...); 
} 

このビュー名は、ビューリゾルバによって実際のビュークラスに解決されます。

BeanNameViewResolverは簡単な仕事をしています。このビュー名をIDとして持つapplicationContext内のビューBeanを探します。

単純なアプリケーションの場合、これはビュー名からビューに変換する最も簡単な方法です。

関連する問題