に関するいくつかの説明が必要: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/servlet/view/BeanNameViewResolver.htmlは、私がここにドキュメントを読んでBeanNameViewResolver
をしかし、私は春のドキュメントは時々理解し、複雑かつ困難になることができると思いますので、私はこのクラスについて少し説明が必要。
に関するいくつかの説明が必要: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/servlet/view/BeanNameViewResolver.htmlは、私がここにドキュメントを読んでBeanNameViewResolver
をしかし、私は春のドキュメントは時々理解し、複雑かつ困難になることができると思いますので、私はこのクラスについて少し説明が必要。
ドキュメントに記載されているとおり、BeanNameViewResolver
は、View
をBeanとして宣言します。通常は、いくつかの特殊目的のビューのために必要です。
たとえば、コントローラの1つがExcelスプレッドシートをレンダリングするとします。だから、あなたはAbstractExcelView
をサブクラス化し、モデル値に基づいて、スプレッドシートレンダリングするために、カスタム・ロジックを実装します。
public class MyExcelView extends AbstractExcelView { ... }
をし、Beanとして宣言:
<bean id = "myExcelView" class = "MyExcelView" />
その後BeanNameViewResolver
を宣言すると、コントローラで使用できるようにします:コントローラが表示名myExcelView
のModelAndView
を返すと、スプレッドシートがレンダリングされます。
BeanNameViewResolver
は通常、「通常の」ビュー(BeanNameViewResolver
ビューを見つけることができない場合は、他のリゾルバはそれを見つけようとするように)を扱ういくつかの他のビューリゾルバと組み合わせて使用されています
<bean class = "...BeanNameViewResolver">
<property name = "order" value = "0" />
</bean>
<bean class = "...InternalResourceViewResolver">
<property name = "order" value = "1" />
...
</bean>
ドキュメントは素晴らしいものではありません。
春mvcのビューリゾルバはビュー名からビューに変換するBeanです。
ビュー名は単純な文字列です。これは、ModelAndViewオブジェクト内のコントローラのhandleRequest()メソッドによって返されます。
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
....
return ModelAndView("thisIsTheViewName", ...);
}
このビュー名は、ビューリゾルバによって実際のビュークラスに解決されます。
BeanNameViewResolverは簡単な仕事をしています。このビュー名をIDとして持つapplicationContext内のビューBeanを探します。
単純なアプリケーションの場合、これはビュー名からビューに変換する最も簡単な方法です。
+1は私より速く、いくつかの詳細を持って私のブロブdoesntは持っています:) –
+1良い説明のために。いくつかの質問:1)beannameviewresolverはスレッドセーフである必要がありますか? 2)内部リソースビューリゾルバはスレッドセーフですか? – shrini1000
非常に良い説明 – Krishna