最終的には、Spring のテーマ サポートを使用して、必要なものを実現しました。私のビュー コードでは、<spring:theme code=""/>
タグを使用して画像ファイルへのパスを取得します。
<img src="<spring:theme code="theme.images.actions.edit.link"/>" />
このタグは any<fmt:message>
または<spring:message>
タグと同様に動作しますが、独自の「メッセージ バンドル」があります。私のapplicationContextで必要な構成は次のとおりです。
<!--
=========================================================
Themes
=========================================================
-->
<bean id="themeResolver" class="org.springframework.web.servlet.theme.SessionThemeResolver">
<property name="defaultThemeName" value="themes.default"/>
</bean>
<bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource" />
私のアプリケーションのすべてのテーマは、/WEB-INF/classes/themes/
. デフォルトのテーマ プロパティは/WEB-INF/classes/themes/default.properties
次のようになります。
...
theme.images.actions.show.link=/@contextPath@/shared/images/famfam/zoom.png
theme.images.actions.delete.link=/@contextPath@/shared/images/famfam/cross.png
...
アプリのテーマ (およびアイコン) を変更するには、(applicationContext で) ThemeChangeInterceptor を使用します。
<!--
=========================================================
Theme resolving
=========================================================
-->
<bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
<property name="paramName" value ="theme" />
</bean>
これにより、ユーザーは"&theme=themes.default"
または"&theme=themes.alternative"
リクエスト パラメータを介してテーマを切り替えることができます。
私のセットアップの重要な部分の 1 つは@contextPath@
、テーマ プロパティ ファイルです。これは、Ant ビルド プロセス中に、開発/テスト/運用環境の正しいコンテキスト パスに置き換えられます。私のbuild.xmlの重要な部分は次のとおりです。
<!-- copy all common themes to classes -->
<copy todir="${build.war}/WEB-INF/classes/themes" overwrite="true" filtering="true">
<fileset dir="resources/themes" includes="**/*.properties" />
<filterchain>
<replacetokens>
<token key="contextPath" value="${setup.contextPath}"/>
</replacetokens>
</filterchain>
</copy>
これにより、Spring Web アプリのテーマの「実行開始」が得られることを願っています。私の意見では、この設定により、アプリケーションのルック アンド フィールを簡単に変更できます。
参考文献: