How to verify the existence of a freemarker template before enabling it

Sometimes I have to use the following snippet:

<#include 'some.ftl' /> 

Does freemarker have a directive that returns the existence of some.ftl?

how

 <#include_if_exists 'some.ftl' > 

Or can I implement such a directive on my own?

+1
freemarker
source share
2 answers

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!"); } } } } 
+4
source share

 <#attempt> <#recover> </#attempt> 
Operator

gotta do the trick.

See http://freemarker.sourceforge.net/docs/ref_directive_attempt.html for more information.

0
source share

All Articles