Java, Spring перехватывает файл свойств тем в css файл - PullRequest
0 голосов
/ 15 августа 2011

вот как я инициализирую тему:

<bean id="themeSource"
class="org.springframework.ui.context.support.ResourceBundleThemeSource">
    <property name="basenamePrefix" value="resources.theme-" />
</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>

это структура моей папки:

enter image description here

это внутренняя часть моих 3 файлов свойств:

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

Я также пробовал это:

  1. css = classpath: themes / default.css
  2. css = / themes / default.css
  3. css =. / Themes / default.css

Должен ли CSS быть в WEB-INF / классах.Я пытался переместить его в и т. Д., Но, похоже, так и не смог заставить его работать.

Вот как я поместил его в свой JSP:

<link rel="stylesheet" href="<spring:theme code='css'/>" type="text/css" />

Теперь это мойвывод выглядит так:

enter image description here

Это часть JSP:

<span style="float: left">
<a href="?theme=default">def</a>
|
<a href="?theme=black">blk</a>
|
<a href="?theme=blue">blu</a>
</span>

Это мой black.css.

body {
    background-color: #888;
    color: white;
}

Моя проблема в том, что css никогда не появляется в моем файле JSP.Вероятно, это связано с тем, что файл свойств не может найти файл css ... Не стесняйтесь спрашивать дополнительную информацию.

Ответы [ 2 ]

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

Я думаю, что есть проблема с этим.

<bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource"> <property name="basenamePrefix" value="resources.theme-" /> </bean>

Согласно Javadoc:

public void setBasenamePrefix(String basenamePrefix)

Установить префикс, который будет применен к базовым именам ResourceBundle, т.е. названия тем. Например: basenamePrefix = "test.", ThemeName = "theme" -> = базовое "test.theme".

Обратите внимание, что имена ResourceBundle фактически являются местоположениями classpath: As Как следствие, стандартный ResourceBundle JDK рассматривает точки как разделители пакетов. Это означает, что «test.theme» эффективно эквивалентно "test / theme", так же как и для программных Использование java.util.ResourceBundle.

Кроме того, вы можете поместить файлы свойств темы в папку WEB-INF / classes, как написано в Справочных документах.

По умолчанию ResourceBundleThemeSource использует пустое базовое имя префикс. В результате файлы свойств загружаются из корня путь к классам Таким образом, вы бы поместили определение темы cool.properties в каталоге в корне пути к классам, например, в / WEB-INF / классы. ResourceBundleThemeSource использует стандартную Java механизм загрузки пакета ресурсов, позволяющий полностью интернационализация тем.

Полагаю, проблема в вашем случае в том, что вы дважды упомянули путь к css. Один раз в <property name="basenamePrefix" value="resources.theme-" /> и один раз в файле свойств тоже

css=themes/black.css
css=themes/blue.css
css=themes/default.css
0 голосов
/ 16 августа 2011

Мне нужно было переместить мои ресурсы (файлы js или css) в корневую папку моего проекта.

Второе, что я мог сделать вместо этого, - создать сопоставление ресурсов для моих CSS-файлов.

Оба будут работать, но я выбрал первое решение на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...