OK Solved custom directive
[@include template = 'some.ftl' /]
WARN if the pattern is not found ...
import java.io.FileNotFoundException; import java.io.IOException; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import freemarker.core.Environment; import freemarker.template.Template; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateDirectiveModel; import freemarker.template.TemplateException; import freemarker.template.TemplateModel; public class FreemarkerIncludeDirective implements TemplateDirectiveModel { private static final Logger logger = LoggerFactory.getLogger(FreemarkerIncludeDirective.class); @Override public void execute(Environment env, @SuppressWarnings("rawtypes") Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { if (params.containsKey("template")) { String t = params.get("template").toString(); try { Template template = env.getTemplateForImporting(t); env.include(template); } catch (FileNotFoundException e) { logger.warn(t + "not found!"); } } } }
jackalope
source share