freemarker: загрузчик шаблонов: загрузка шаблонов из zip-файла

Можно ли загрузить шаблоны freemarker из zip-файла?

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

Является ли это возможным?


person mhshams    schedule 18.11.2010    source источник


Ответы (2)


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

i.e.

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(); 
person Andy    schedule 18.11.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».

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

person Alastair    schedule 06.12.2010
comment
См. также stackoverflow.com/questions/3019424/ - person Rodney Gitzel; 27.05.2011