freemarker: загрузчик шаблонов: загрузка шаблонов из zip-файла - PullRequest
1 голос
/ 18 ноября 2010

возможно ли загрузить шаблоны бесплатных маркеров из zip-файла?

Я хочу сжать все шаблоны в одном файле и поместить его в свое приложение.

возможно ли это?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Я не знаю о zip-файле, но вы можете загрузить их из jar-файла с помощью функции classForTemplateLoading:

public class MyLoader 
{
    private static Configuration cfg = new Configuration();

    static 
    {
         cfg.setClassForTemplateLoading( MyLoader.class, "/" );
    }

    public Template getTemplate( String path ) throws Throwable
    {
         return cfg.getTemplate(path);
    }
}

Например, если ваш шаблон «MyTemplate.ftl» находится в пакете «com.mycode.templates», путь будет «/com/mycode/templates/MyTemplate.ftl".

Таким образом, вы должны создать банку вашего «исходного» дерева, как если бы это были классы, добавить банку в ваш путь к классам, и все должно просто работать.

0 голосов
/ 18 ноября 2010

Возможно, это не идеальный вариант, но если вы просто загрузите текст заархивированных файлов шаблона, вы можете создать экземпляр FreeMarkerTemplate из String. Ниже я привел пример того, как это можно сделать, но я предлагаю также прочитать документацию по freemarker . (проверьте вкладку «Начало работы»)

т.е.

Configuration cfg = new Configuration();
//configuring default free marker configuration
cfg.setObjectWrapper(new DefaultObjectWrapper());

//construct template from string
String templateText = "";//load template text from zip file

Template template= new Template("sometemplate", new StringReader(templateText), cfg);

//your data model 
Object root = new Object(); 

//process template 
StringWriter out = new StringWriter(); 
template.process(new Object(), out); 

String renderedText= out.toString(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...