Пусть скорость находит шаблоны в войне

Я использую шаблоны Velocity, которые я храню в src/main/webapp/templates,

Служба REST моей Джерси должна найти эти шаблоны. Локально в моем Eclipse (с плагином Sysdeo) я использовал

p.setProperty("resource.loader", "class");
p.setProperty("class.resource.loader.class",
    "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");

заставить Tomcat найти шаблоны (которые я получил с /questions/46501579/nevozmozhno-najti-resursyi-shablona-skorosti/46501663#46501663). Теперь, когда я развернул войну на "настоящем" Tomcat, ресурсы не были найдены (Невозможно найти ресурс 'templates/FreigabeNeu.vm')

Я, вероятно, должен установить свойства на что-то другое, но я просто не понимаю, как мне это нужно сделать.

Я проверил, что templates Каталог действительно копируется в основной каталог войны.

1 ответ

ClasspathResourceLoader будет загружать ресурсы из пути к классам, а не просто в произвольное место в файле WAR. Это означает, что если ваши шаблоны находятся в /webapp/templates в вашем WAR-файле (или где бы то ни было) btu этот путь не находится в пути к классам, тогда они не будут найдены.

Если это веб-приложение, то вы действительно хотите использовать Velocity Tools WebappLoader который использует ServletContext загружать файлы из самого контекста. Это позволяет читать файлы практически из любого места в веб-приложении, даже из файлов WAR и т. Д.

Возможно, вам придется перепроверить, чтобы увидеть, какова структура вашего файла WAR - именно там, где templates/ каталог заканчивается - чтобы убедиться, что у вас правильный базовый путь. Я предполагаю, что они окажутся под /templates или же /webapp/templates, но подозреваю, что первое скорее... каталог webapp очень вероятно, что в конечном итоге окажется корнем файла WAR, поэтому /templates наверное правильно.

Другие вопросы по тегам