2011-08-14 33 views
1

春-servlet.xmlを働いていない:WEB-INF /資源の下ジャワ、春は混乱のテーマを設定し、テーマ豆の設定

<bean id="themeSource" 
class="org.springframework.ui.context.support.ResourceBundleThemeSource"> 
    <property name="basenamePrefix" value="theme-" /> // also tried WEB-INF.resources.theme- and WEB-INF/resources/theme- here, same problem 
</bean> 

<bean id="themeChangeInterceptor" 
    class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"> 
    <property name="paramName" value="theme" /> 
</bean> 

<bean id="themeResolver" 
    class="org.springframework.web.servlet.theme.CookieThemeResolver"> 
    <property name="defaultThemeName" value="default" /> 
</bean> 

    <bean id="handlerMapping" 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="interceptors"> 
     <list> 
      <ref bean="localeChangeInterceptor" /> 
      <ref bean="themeChangeInterceptor" /> 
     </list> 
    </property> 
</bean> 

、3つのテーマファイルです:

  1. テーマを-black.properties
  2. theme-blue.properties
  3. theme-default.properties

各ファイルはそれに応じて、これを含める:

css=themes/black.css 
css=themes/blue.css 
css=themes/default.css 

私はこれらのCSSファイルの3を含むフォルダWEB-INF /テーマを、持っている、私は、CSSの内容はここでは重要ではないと思います。今私はに実行し、エラー

は次のとおりです。

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Theme 'default': No message found under code 'css' for locale 'en'. 

ので、基本的にそれはちょうどそれがプロパティファイルを見つけることができないことを意味する、テーマのCSS値を見つけることができない...

何私は間違っている?お気軽に質問してください。

答えて

1

テーマプロパティをクラスパスに入れてください(docsで書かれています)。クラスパスは/ WEB-INFフォルダではありません。わかりやすくするためにthis questionを参照してください。デフォルトでは

デリゲートは 負荷特性をクラスパスのルートからのファイルのこと org.springframework.ui.context.support.ResourceBundleThemeSourceになります。

+0

クラスフォルダとそこにあるファイルは単独で生成されていませんか?そこにファイルを手作業で置かなくても動作する方法はありませんか? – Jaanus

+0

"手動でファイルを置く"という言葉をフォルダに入れません。どのようにファイルをフォルダに入れたいのですか?私はあなたもプロパティファイルを/ WEB-INFフォルダに手動で入れることにします。 – kurochenko

+0

クラスフォルダとクラスファイルが自動的に生成されますが、自分自身もクラスファイルも作成しません。 – Jaanus

0

theme.propertiesファイルを "classes"フォルダに入れたくない場合は、 "META-INF"フォルダの下に置くことができます。 mavenを使用してプロジェクトを作成および管理する場合、 "META-INF"フォルダもクラスパスを解除します。

たとえば、「META-INF/theme」の下にテーマを置くと、次のようなことができます。

<!-- resolves localized <theme_name>.properties files in the classpath to allow for theme support --> 
<bean class="org.springframework.ui.context.support.ResourceBundleThemeSource" id="themeSource"> 
    <property name="basenamePrefix" value="META-INF.theme."/> 
</bean> 
0

ここでの問題は、クラスパス.IEの腐敗でtheme-default.propertiesファイルを検索しようと、実際にCSSファイルをResourcebundleThemeSourceではありません。 srcフォルダの下にあります。あなたのすべてのプロパティファイルをその下に置いてください。あなたの問題が解決すると確信しています。

0

あなたはローカライズについては、アプリケーション内の国際化機能を使用しようとしているはい、あなたは以下のコード

<"bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="/WEB-INF/messages" /> 
    <property name="cacheSeconds" value="3000" /> 
</bean> 

を追加する必要がある場合はそれ以外の場合は、以下のコード

<bean id="handlerMapping" 
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="interceptors"> 
    <list> 
     <ref bean="localeChangeInterceptor" /> 
     <ref bean="themeChangeInterceptor" /> 
    </list> 
    </property> 
</bean> 
からあなたのコード <ref bean="localeChangeInterceptor" />を削除

このコードが正常に動作することを願っています.....

関連する問題