Как получить статический (не шаблонный) контент, используя Velocity API? - PullRequest
1 голос
/ 23 ноября 2011

Velocity API предоставляет способ получения шаблонов по имени (который затем загружается с помощью менеджера ресурсов Velocity).Есть ли подобный способ получения статического контента?

Если у вас есть VelocityEngine, вы можете получить такой шаблон:

Template template = velocityEngine.getTemplate("/path/to/resource.vm");

, но такой вещи как:

* 1007 не существует*

Последний метод предоставляется базовым VelocityInstance, но VelocityEngine не предоставляет его.Есть ли альтернативный способ добраться до статического контента?

1 Ответ

0 голосов
/ 23 июля 2012

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

Сначала вы должны создать класс, который расширяет org.apache.velocity.runtime.resource.loader.ResourceLoader(например, " com.mycomp.MyLoader ")

Во-вторых, вы должны настроить свой скоростной движок на использование нового загрузчика ресурсов:

VelocityEngine ve = new VelocityEngine();
ve.setProperty("MyLoader.resource.loader.class","com.mycomp.MyLoader");
ve.setProperty("resource.loader","MyLoader,file");

Ресурс свойства.loader сообщает Velocity имена доступных загрузчиков.«файл» является загрузчиком по умолчанию.когда будет вызван ve.getTemplate, Velocity будет перебирать список загрузчиков.Сначала он вызовет ваш пользовательский загрузчик (MyLoader).если ресурс не будет найден, он будет искать его с помощью загрузчика файлов по умолчанию.

В-третьих, вы можете использовать MyLoader, чтобы просто загрузить любой файл, который вы хотите.(не только шаблон скорости), вы можете сделать это, используя:

MyLoader loader = new MyLoader();
loader.getResourceStream("/path/to/resource.png")
...