在freemarker中可以使用 #include 命令引入其他的文件。
但是今天自己在写代码的时候遇到一个问题,比如我的代码目录结构是这样的:
我在freemarker下面的一个java代码里面写了如下代码:
package freemarker;
import java.io.File;
import java.io.IOException;
import
java.io.StringWriter;
import java.io.Writer;
import
java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import
freemarker.template.Template;
import
freemarker.template.TemplateException;
public class TestInclude {
private Configuration cfg = null;
public Configuration getCfg() {
return cfg;
}
public void init() throws IOException {
cfg = new
Configuration();
cfg.setDirectoryForTemplateLoading(new
File("bin/freemarker"));
}
public static void main(String args[]) throws IOException,
TemplateException {
TestInclude obj = new TestInclude();
obj.init();
Map root = new HashMap();
Template t =
obj.getCfg().getTemplate("TestInclude.ftl");
Writer out = new
StringWriter();
t.process(root, out);
System.out.println(out.toString());
}
}
然后在TestInclude.ftl 中引入如下:
<html>
<head>
<title>Testpage</title>
</head>
<body>
<h1>Testpage</h1>
<p>Blahblah...
<#include
"/free/test.ftl">
</body>
</html>
结果就抛异常了,找不到free/test.ftl
郁闷。于是改成<#include "bin/free/test.ftl"> 喔,还是不行
继续,改成<#include "../bin/free/test.ftl"> ,这样也不行呀?
最后的解决方法如下:
public class TestInclude {
private Configuration cfg = null;
public Configuration getCfg() {
return cfg;
}
public void init() throws IOException {
cfg = new
Configuration();
cfg.setDirectoryForTemplateLoading(new File("bin"));
}
public static void main(String args[]) throws IOException,
TemplateException {
TestInclude obj = new TestInclude();
obj.init();
Map root = new HashMap();
Template t =
obj.getCfg().getTemplate("/freemarker/TestInclude.ftl");
Writer out = new StringWriter();
t.process(root, out);
System.out.println(out.toString());
}
}
然后在TestInclude.ftl中如下写:
<#include
"/free/test.ftl">
是不是可以这样理解,就算是include中的路径,和TestInclude。ftl
一样,都是相对于 cfg.setDirectoryForTemplateLoading(new File("bin"));
这个目录的吧。。。。
分享到:
相关推荐
freeMarker模板文件 word文件示例、ftl文件示例、输出文件示例,方便学习者自己制作模板。
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java
Word从2003开始支持XML格式,用XML来做就很简单了。 大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml...关于FreeMarker模板编辑说明在我的资源中有中文文档,需要的朋友可以去下载。
FreeMarker模板基本语法
FreeMarker模板文件的组成及基本语法详解(一)
Java freemarker 模板生成word动态表格
FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力...
简单的实现了java使用freemarker模板技术导出word的简单功能,不喜勿喷,网上很多的不详细
在项目中难免和各种数据报表打交道,如导出XX申请表,登记表,推荐表之类。就可以通过现有信息导出Word文档。基于Java语言来导出Word文档的方式也有很多种,如Jacob,Apache POI,Freemarker,PageOffice,java2word...
通过程序生成PDF文件, wkhtmltox-0.12.3.2_msvc2013-win64.exe html-url
1.这是一个在根目录下的mail.properties文件中配好发送邮件地址和接收邮箱地址的实例,利用freeMarker模板作为展示,在测试类中提供配固定接收邮箱地址和手动输入接收邮箱地址两种方法进行发送试验,结果都能实现...
基于Freemarker模板的纯Java代码实现的代码生成器工具
3、示例有本地模板和远程模板之分,可杜绝pdf标题丢失的问题; 4、资源概要:先阅读README.md文档,然后根据文档中的资源示例运行代码,有postman和内部调用两种方式; 5、项目目录other/下面有示例文件可快速入手; ...
通过springboot 整合freemarker模板引擎,自动发送html格式邮件
基于itext7+freemarker模板导出pdf,先生成html字符串再转成pdf,已解决中文问题,图片能正常显示
freemarker模板生成例子 可以根据表名生成其增删改查方法以及jsp页面,基于spirng...使用前请更改jdbc配置文件下的项目路径和数据库,生成后需要将controller上方注释复制到mybatisconfig中对应位置,core为其中jar源码
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所...
附件包含了mybatis-plus自动生成代码,基于freemarker的模板。包括常规的curd。 【特点】针对每个接口都有对应的入参和出参,不公用entity。 如,add接口,则入参会自动生成为addEntityReq。具体可下载模板进行查看...
基于Freemarker模板的代码生成器前台页面的ftl模板文件
1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流