Пусть скорость находит шаблоны в войне
Я использую шаблоны 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
наверное правильно.