Spring MVCのViewResolverガイド

Spring MVCのViewResolverのガイド

1. 概要

すべてのMVCフレームワークは、ビューを操作する方法を提供します。

Springは、ビューリゾルバーを介してこれを行います。これにより、実装を特定のビューテクノロジーに結び付けることなく、ブラウザーでモデルをレンダリングできます。

ViewResolverは、ビュー名を実際のビューにマップします。

そして、Springフレームワークには、かなりの数のビューリゾルバーが付属しています。 InternalResourceViewResolverXmlViewResolverResourceBundleViewResolverおよびその他いくつか。

これは、最も一般的なビューリゾルバーと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を追加します

このリゾルバーの名前が示すように、ResourceBundleViewResolverResourceBundleで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ファクトリと同じDTDXMLで記述された構成ファイルを受け入れます。

@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ベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。