Spring MVCのViewResolverのガイド
1. 概要
すべてのMVCフレームワークは、ビューを操作する方法を提供します。
Springは、ビューリゾルバーを介してこれを行います。これにより、実装を特定のビューテクノロジーに結び付けることなく、ブラウザーでモデルをレンダリングできます。
ViewResolverは、ビュー名を実際のビューにマップします。
そして、Springフレームワークには、かなりの数のビューリゾルバーが付属しています。 InternalResourceViewResolver、XmlViewResolver、ResourceBundleViewResolverおよびその他いくつか。
これは、最も一般的なビューリゾルバーとhow to use multiple ViewResolver in the same configurationを設定する方法を示す簡単なチュートリアルです。
2. SpringWeb構成
Web構成から始めましょう。 @EnableWebMvc、@Configuration、@ComponentScanで注釈を付けます。
@EnableWebMvc
@Configuration
@ComponentScan("com.example.web")
public class WebConfig implements WebMvcConfigurer {
// All web configuration will go here
}
ここで、構成にビューリゾルバーを設定します。
3. InternalResourceViewResolverを追加します
このViewResolverを使用すると、ビュー名にプレフィックスやサフィックスなどのプロパティを設定して、最終的なビューページのURLを生成できます。
@Bean
public ViewResolver internalResourceViewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".jsp");
return bean;
}
例の[.hps]#Forsuch simplicity#の場合、リクエストを処理するためのコントローラーは必要ありません。
構成で定義されているように、/WEB-INF/viewフォルダーに配置された単純なjspページのみが必要です。
This is the body of the sample view
4. ResourceBundleViewResolverを追加します
このリゾルバーの名前が示すように、ResourceBundleViewResolverはResourceBundleでBean定義を使用します。
まず、前の構成にResourceBundleViewResolverを追加します。
@Bean
public ViewResolver resourceBundleViewResolver() {
ResourceBundleViewResolver bean = new ResourceBundleViewResolver();
bean.setBasename("views");
return bean;
}
バンドルは通常、クラスパスにあるプロパティファイルで定義されます。 以下はviews.propertiesファイルです。
sample.(class)=org.springframework.web.servlet.view.JstlView
sample.url=/WEB-INF/view/sample.jsp
この構成でも、上記の例で定義された単純なjspページを使用できます。
5. XmlViewResolverを追加します
このViewResolverの実装は、SpringのXML Beanファクトリと同じDTDでXMLで記述された構成ファイルを受け入れます。
@Bean
public ViewResolver xmlViewResolver() {
XmlViewResolver bean = new XmlViewResolver();
bean.setLocation(new ClassPathResource("views.xml"));
return bean;
}
以下は、構成ファイルviews.xmlです。
[.hps] [result_box .short_text]#As for the previous examples [.hps]#we can use our simple jsp page defined [.hps]#previously.
6. ViewResolversをチェーンし、注文の優先順位を定義する
Spring MVCはmultiple view resolversもサポートしています。
これにより、状況によっては特定のビューをオーバーライドできます。 複数のリゾルバーを構成に追加することにより、ビューリゾルバーを単純にチェーンできます。
それが済んだら、これらのリゾルバーの順序を定義する必要があります。 order propertyは、チェーン内の呼び出しの順序を定義するために使用されます。 順序プロパティ(最大の順序番号)が高いほど、ビューリゾルバがチェーン内で後から配置されます。
順序を定義するには、次のコード行をビューリゾルバーの構成に追加します。
bean.setOrder(0);
InternalResourceViewResolverは非常に明示的なマッピングを表すことを目的としているため、順序の優先順位に注意してください。 また、他のリゾルバーの次数が高い場合、InternalResourceViewResolverは呼び出されない可能性があります。
7. 結論
このチュートリアルでは、Java構成を使用してビューリゾルバーのチェーンを構成しました。 順序の優先度で遊ぶことにより、呼び出しの順序を設定できます。
この簡単なチュートリアルの実装は、github projectにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。