Можете ли вы настроить скорость для использования файла панели инструментов из classpath? - PullRequest
0 голосов
/ 01 декабря 2011

Я использую Spring с VelocityViewResolver, настроенным Spring

<bean id="velocityViewResolver"  class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="order" value="1" />
    <property name="suffix" value=".vm" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="exposeSpringMacroHelpers" value="true" />
    <property name="toolboxConfigLocation" value="/WEB-INF/velocityToolbox.xml" />
</bean>

Это работает, если файл speedToolbox.xml находится под WEB-INF; однако я пытаюсь поместить это в classpath. Есть ли способ сделать это?

Я попытался указать toolboxConfigLocation как "classpath: /wherever/velocityToolbox.xml", но он не находит ресурс, и я в итоге не настроил ни один набор инструментов и NPE во время выполнения (по какой-то причине, кажется, как в коде, ожидайте, что местоположение начнется с «/», или добавьте «/» непосредственно перед поиском ресурса).

Учитывая, что ресурс расположен с использованием ServletContext.getResourceAsStream, с содержимым свойства toolboxConfigLocation с префиксом «/», есть ли способ, которым я могу «определить» ресурс в моей весенней конфигурации, который каким-то образом «указывает» на Фактический ресурс classpath?

Любая идея приветствуется.

1 Ответ

0 голосов
/ 22 июня 2012

Я считаю, что это должен быть полный путь, например:

/WEB-INF/classes/com/myapp/resources/toolbox.xml

Метод ServletToolboxManager # getInstance (ServletContext, String toolboxConfigLocation) используется для генерации ToolboxManager, настроенного с помощью панели инструментов для созданияChainedContext, используемый в VelocityToolboxView.

Этот метод предварительно добавляет путь к «/», если он не существует, а затем использует ServletContext # getResourceAsStream (String path) для чтения его в.

Имея это в виду, вы добьетесь успеха, если зададите полный путь от корневого контекста.

...