freemarker宏定义引用路径解决方案
Posted svygh123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了freemarker宏定义引用路径解决方案相关的知识,希望对你有一定的参考价值。
编写代码生成器的时候,假如模板文件夹是templates
宏代码路径:D:/workspace/JavaGen/templates/macro.ftl
现在有一个$ClassNameController.java在以下路径
D:/workspace/JavaGen/templates/ctrl/$ClassNameController.java
$ClassNameController.java需要引用macro.ftl
Configuration cfg = new Configuration(Configuration.VERSION_2_3_29);
// templateDir=D:/workspace/JavaGen/templates/ctrl
cfg.setDirectoryForTemplateLoading(new File(templateDir));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setLogTemplateExceptions(false);
cfg.setWrapUncheckedExceptions(true);
cfg.setFallbackOnNullLoopVariable(false);
Template temp;
temp = cfg.getTemplate(templateName); // templateName=$ClassNameController.java
使用上面的代码就会报错,因为路径问题而找不到macro.ftl
正确代码如下
Configuration cfg = new Configuration(Configuration.VERSION_2_3_29);
// templateDir=D:/workspace/JavaGen/templates
cfg.setDirectoryForTemplateLoading(new File(templateDir));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setLogTemplateExceptions(false);
cfg.setWrapUncheckedExceptions(true);
cfg.setFallbackOnNullLoopVariable(false);
Template temp;
temp = cfg.getTemplate(templateName); // templateName=ctrl/$ClassNameController.java
$ClassNameController.java引用macro.ftl如下:
<#include "/macro.ftl" />
以上是关于freemarker宏定义引用路径解决方案的主要内容,如果未能解决你的问题,请参考以下文章