1概要

すべてのMVCフレームワークはビューを扱う方法を提供します。

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


ViewResolver

は、ビュー名を実際のビューにマッピングします。

そしてSpringフレームワークはかなりの数のビューリゾルバを持っています。


InternalResourceViewResolver



XmlViewResolver



ResourceBundleViewResolver

、その他いくつか

これは最も一般的なビューリゾルバを設定する方法と同じ設定で複数の__ViewResolverを使う方法を示す簡単なチュートリアルです。


2 Spring Webの設定

Web設定から始めましょう。それに

@ EnableWebMvc



@ Configuration

、および

@ ComponentScan

の注釈を付けます。

@EnableWebMvc
@Configuration
@ComponentScan("org.baeldung.web")
public class WebConfig implements WebMvcConfigurer {
   //All web configuration will go here
}

ここで、ビューリゾルバを設定に設定します。


3

InternalResourceViewResolver


を追加してください

この

ViewResolver

を使用すると、ビュー名にprefixやsuffixなどのプロパティを設定して最終的なビューページのURLを生成できます。

@Bean
public ViewResolver internalResourceViewResolver() {
    InternalResourceViewResolver bean = new InternalResourceViewResolver();
    bean.setViewClass(JstlView.class);
    bean.setPrefix("/WEB-INF/view/");
    bean.setSuffix(".jsp");
    return bean;
}

この例では、リクエストを処理するためにコントローラは必要ありません。

設定で定義されているように、

/WEB-INF/view

フォルダーに配置された単純な

jsp

ページのみが必要です。

<html>
    <head></head>
    <body>
        <h1>This is the body of the sample view</h1>
    </body>
</html>


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

です。

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">

    <bean id="xmlConfig" class="org.springframework.web.servlet.view.JstlView">
        <property name="url" value="/WEB-INF/view/xmlSample.jsp"/>
    </bean>

</beans>

** 6.

ViewResolvers

をチェーンして注文の優先順位を定義

Spring MVCは

multiple view resolver

もサポートしています。

これにより、状況によっては特定のビューを上書きできます。構成に複数のリゾルバを追加することで、単純にビューリゾルバを連鎖させることができます。

それが終わったら、これらのリゾルバの順番を定義する必要があります。


  • order

    プロパティ** は、チェーン内の呼び出しの順序を定義するために使用されます。 orderプロパティ(最大注文番号)が高いほど、ビューリゾルバはチェーン内で後に配置されます。

順序を定義するために、ビューリゾルバの設定に次のコード行を追加することができます。

bean.setOrder(0);


InternalResourceViewResolver

はより高い順序を持つべきであるため、順序の優先順位に注意してください。これは非常に明示的なマッピングを表すことを意図しているからです。そして他のリゾルバがより高次を持っているなら、

InternalResourceViewResolver

は決して呼び出されないかもしれません。


7. 結論

このチュートリアルでは、Java設定を使用して一連のビューリゾルバを設定しました。優先順位を付けてプレイすることで、呼び出しの順番を設定できます。

この簡単なチュートリアルの実装はhttps://github.com/eugenp/tutorials/tree/master/spring-mvc-java[githubプロジェクト]にあります – これはEclipseベースのプロジェクトなので、簡単にできます。そのままインポートして実行します。