Файл свойств скорости через web.xml - PullRequest
1 голос
/ 31 января 2012

Я пытаюсь использовать ClasspathResourceLoader для загрузки моих * .vm файлов.У меня они есть в / WEB-INF / templates, которые я добавил в путь сборки.Мой файл web.xml содержит:

<servlet>
    <servlet-name>ServletVelocity</servlet-name>
    <servlet-class>com.edw.servlet.VelocityServlet</servlet-class>
    <init-param>
        <param-name>org.apache.velocity.properties</param-name>
        <param-value>/WEB-INF/velocity.properties</param-value>
    </init-param>
</servlet>

Файл speed.properties находится в папке WEB-INF.Ключ / значения, которые мне нужны:

resource.loader = class
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader

Однако, когда я пытаюсь:

template = Velocity.getTemplate("index.vm");

, я получаю:

Exception caught: Unable to find resource 'index.vm'

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

По умолчанию Velocity использует файл speed.properties, расположенный внутри фляги.Если я отредактирую , что one (два вышеупомянутых ключа / значения), все работает.Я предполагаю, что speed.properties, упомянутые в моем файле web.xml, не загружаются, однако я вижу это в своей консоли при запуске сервлета:

INFO:  Velocity  [trace] Searching for properties at: /WEB-INF/velocity.properties
INFO:  Velocity  [debug] Configuring Velocity with properties at: /WEB-INF/velocity.properties
...
INFO:  Velocity  [debug] Initializing Velocity, Calling init()...
INFO:  Velocity  [debug] Default Properties File: org\apache\velocity\runtime\defaults\velocity.properties (???)
INFO:  Velocity  [debug] ResourceLoader instantiated: org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
INFO:  Velocity  [trace] ClasspathResourceLoader : initialization complete.

НО, если я изменяю скорость по умолчаниюФайл .properties внутри jar для скорости (org \ apache \ speed \ runtime \ defaults \ speed.properties), все работает просто отлично, я могу загрузить .vm, все в порядке: ошибок нет.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Файлы в / WEB-INF / templates не находятся в пути к классам, я не уверен насчет Velocity, но SpringP ClassPathResourceLoader не может найти файлы в этой папке, вы должны использовать загрузчик ресурсов веб-контекста то.

1 голос
/ 31 января 2012

Когда вы вызываете Velocity.doanything, вы просите синглтон Velocity сделать это.Ваши скоростные свойства настраивают VelocityServlet, а не синглтон Velocity.

Посмотрите на некоторые примеры приложений сервлетов в проекте VelocityTools.Там вы найдете превосходный сервлет, который не считается устаревшим, и некоторые примеры использования Velocity в среде сервлетов.

...