Spring MVCで複数のリゾルバの優先度を設定する

問題

Spring MVCアプリケーションでは、ビュー名を解決するためにいくつかのビューリゾルバ戦略を適用することがよくあります。たとえば、3つのビューリゾルバを組み合わせます。 InternalResourceViewResolver ResourceBundleViewResolver XmlViewResolver

<beans ...>
    <bean class="org.springframework.web.servlet.view.XmlViewResolver">
          <property name="location">
             <value>/WEB-INF/spring-views.xml</value>
          </property>
    </bean>

    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
          <property name="basename" value="spring-views"/>
    </bean>

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

しかし、ビュー名が返された場合、どのリゾルバ戦略が使用されますか?

解決策

複数のビューリゾルバ戦略が適用されている場合、 " order "プロパティで優先順位を宣言しなければなりません。

<beans ...>
    <bean class="org.springframework.web.servlet.view.XmlViewResolver">
         <property name="location">
            <value>/WEB-INF/spring-views.xml</value>
         </property>
         <property name="order" value="0"/>
    </bean>

    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
         <property name="basename" value="spring-views"/>
         <property name="order" value="1"/>
    </bean>

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

ビュー名が返されると、ビュー解決戦略は次の順序で機能します。

XmlViewResolver --> ResourceBundleViewResolver --> InternalResourceViewResolver

ソースコードをダウンロードする

ダウンロードする - SpringMVC-ViewResolver-Priority-Example.zip (7KB)

参考文献

  1. リンク://spring-mvc/spring-mvc-internalresourceviewresolver-example/[Spring

MVC InternalResourceViewResolverの例]。リンク://spring-mvc/spring-mvc-xmlviewresolver-example/[Spring MVC

XmlViewResolverの例]。リンク://spring-mvc/spring-mvc-resourcebundleviewresolver-example/[Spring

MVC ResourceBundleViewResolverの例]

前の投稿:Maven - Jarファイル内のlogback.xmlを除外する
次の投稿:Oracle PL/SQL - UPDATEトリガの例