1

ビューテクノロジとしてTiles/JSPを使用してSpringMVCWebアプリケーションを構築しています。以前、Common画像へのパスをCommonクラスに保存しました。

 public final static String IMG_BREADCRUMBS_NEXT = "/shared/images/famfam/bullet_arrow_right.png";

次に、jspでこのクラスを使用して、次のような画像srcを取得します。

 <img src="<%= Common.IMG_BREADCRUMBS_NEXT %>"/>

jspコードのスクリプトレットを削除し、代わりにjstlなどを使用したいと思います。この種の情報を保存するための最良の方法は何ですか?リソースバンドルですか?これをどのように解決しましたか?

4

3 に答える 3

2

最終的には、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 アプリのテーマの「実行開始」が得られることを願っています。私の意見では、この設定により、アプリケーションのルック アンド フィールを簡単に変更できます。

参考文献:

于 2009-05-13T05:55:10.083 に答える
1

アプリケーションスコープで構成Beanを使用すると、次のように記述できます。

<img src="${configuration.imagePath}/icon.png">

私はSpringを使用していませんが、依存性注入を使用して、JBossやSeamで行うのと同様のことを行うことができます。

基本的に、構成と呼ばれるPOJOクラスがあり、そのプロパティはアプリケーションの構成パラメーターであり、XML構成(実際にはJBoss MBeanですが、トピックから外れています)からロードされます。この例では、BeanにgetImagePath()メソッドがあります。

Seamは、「application」スコープ内の構成Beanの単一インスタンスのインスタンス化を処理するため、上記のような式でいつでも使用できます。

于 2009-02-16T16:05:35.867 に答える
0

データベースに基づいてテーマを決定するクラスを使用する方が堅牢ではないでしょうか。これにより、ユーザーはテーマを管理したり、時間やユーザーエージェントに基づいてテーマを実装したりできますか?

ユーザーセッションでテーマを保存するために、これを行うと同時に春のテーマを使用することは可能でしょうか?

于 2009-10-06T20:58:04.807 に答える