Java, Spring настраивает темы, сбивает с толку и не работает - PullRequest
1 голос
/ 15 августа 2011

spring-servlet.xml настройка bean-компонентов темы:

<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>

в WEB-INF / resources, где находятся 3 файла темы:

  1. theme-black.properties
  2. theme-blue.properties
  3. theme-default.properties

каждый файл содержит это соответственно:

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

У меня есть папка WEB-INF / themes, которая содержит 3 из этих css-файлов, я думаю, что содержание css здесь не важно.

Теперь я сталкиваюсь с ошибкой:

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

, так что в основном это простоне могу найти значение css для тем, что означает, что он не может найти файл свойств ...

что я делаю неправильно?не стесняйтесь задавать вопросы

Ответы [ 4 ]

1 голос
/ 15 августа 2011

Вы должны попытаться поместить свойства темы в classpath (как написано в docs ).Classpath не является папкой / WEB-INF.См. этот вопрос для ясности.

По умолчанию делегатом будет org.springframework.ui.context.support.ResourceBundleThemeSource, который загружает файлы свойств из корня пути к классам.

0 голосов
/ 25 июля 2013

Вы пытаетесь использовать функции i18N в своем приложении, относительно локализации, если да, то вам нужно добавить приведенный ниже код

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

В противном случае удалите свой код <ref bean="localeChangeInterceptor" /> из приведенного ниже кода

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

Надеюсь, этот код будет работать правильно .....

0 голосов
/ 24 июня 2013

здесь проблема не в том, что css-файл на самом деле ResourcebundleThemeSource пытается найти файл theme-default.properties в папке пути к классу .ie.в папке src.поэтому поместите все свои файлы свойств под ними, и я уверен, что ваша проблема решится.

0 голосов
/ 09 ноября 2011

Если вы не хотите помещать файл 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...