クラス JstlView

実装されたすべてのインターフェース:
AwareBeanNameAwareInitializingBeanApplicationContextAwareServletContextAwareView

public class JstlView extends InternalResourceView
JSTL ページ、つまり、JSP 標準タグライブラリを使用する JSP ページ用の InternalResourceView の特殊化。

Spring のロケールと MessageSource を使用して、JSTL のフォーマットとメッセージタグのロケールとリソースバンドルを指定する JSTL 固有のリクエスト属性を公開します。

InternalResourceViewResolver の一般的な使用箇所は、DispatcherServlet コンテキスト定義の観点から、次のようになります。

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   <property name="prefix" value="/WEB-INF/jsp/"/>
   <property name="suffix" value=".jsp"/>
 </bean>

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
   <property name="basename" value="messages"/>
 </bean>
ハンドラーから返されるすべてのビュー名は、このビュークラスを使用して明示的な JSTL サポートを有効にして、JSP リソース(例: "myView" → "/WEB-INF/jsp/myView.jsp")に変換されます。

指定された MessageSource は、クラスパス内の "messages.properties" などのファイルからメッセージをロードします。これは、JSTL fmt タグ(メッセージなど)が使用する JSTL ローカライゼーションコンテキストとしてビューに自動的に公開されます。より洗練されたものにするために、標準の ResourceBundleMessageSource の代わりに Spring の ReloadableResourceBundleMessageSource を使用することを検討してください。もちろん、他の Spring コンポーネントは同じ MessageSource を共有できます。

これは、主に InternalResourceView 自体の JSTL 依存関係を回避するための別個のクラスです。JSTL は、J2EE 1.4 まで標準 J2EE の一部ではなかったため、クラスパスで JSTL API jar が使用可能であると想定することはできません。

ヒント: JSTL 式(c:out 値式など)内でアプリケーションコンテキスト内のすべての Spring Bean にアクセスできるようにするには、AbstractView.setExposeContextBeansAsAttributes(boolean) フラグを "true" に設定します。これにより、JSP 2.0 ページのプレーンな ${...} 式でそのようなすべての Bean にアクセスできるようになります。

導入:
27.02.2003
作成者:
Juergen Hoeller
関連事項: