以下是在java代码中引用freemark的代码片段
依赖的包spring3.0和freemark2.3.18(附件提供下载)
QuestionForm是以个普通的对象 替换成你自己对象即可
import java.io.*;
import java.util.*;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import com.coderside.app.exam.web.*;
import freemarker.cache.FileTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreeMarkTools {
/**存放模板文件夹的路径***/
private static String baseDir = "classpath:conf/template";
private static Configuration cfg = new Configuration();
/**编码格式***/
private static String charset = "UTF-8";
public static void main(String[] args) {
FreeMarkTools.TemplateFactory("test.ftl");
}
/**
* 根据路径获取模板
* @param path
* @return
*/
public static Template TemplateFactory(String path) {
try {
ResourcePatternResolver r = new PathMatchingResourcePatternResolver();
Resource resource = r.getResource(baseDir);
File file = new File(resource.getURI());
FileTemplateLoader templateLoader = new FileTemplateLoader(file);
cfg.setTemplateLoader(templateLoader);
Template t = cfg.getTemplate(path, charset);
return t;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据指定的模板引用freenark生成字符串格式
* @param path
* @param root
* @return
* @throws TemplateException
* @throws IOException
*/
@SuppressWarnings("unchecked")
public static String createHtml(String path, List<QuestionForm> root) throws TemplateException, IOException {
Template t = TemplateFactory(path);
ByteArrayOutputStream bos = null;
StringBuffer sbuff = new StringBuffer();
Map map = null;
for (QuestionForm qf : root) {
bos = new ByteArrayOutputStream();
map = new HashMap();
map.put("qf", qf);
map.put("id", qf.getQuestionid());
Writer out = new OutputStreamWriter(bos, charset);
if (null != qf.getChooserItems()) {
t.process(map, out);
sbuff.append(new String(bos.toByteArray(), charset));
}
}
return sbuff.toString();
}
}
分享到:
相关推荐
1. **创建数据模型**:在Java代码中,你需要创建一个Map或自定义的Java对象,用来存储要展示的数据。例如,你可以设置键值对`map.put("name", "John");`来表示一个名为"John"的变量。 2. **加载模板**:使用`...
- **创建数据模型**: 在Java代码中,你需要创建一个Map或自定义类实例,填充数据并将其传递给Freemarker。 - **设置Freemarker配置**: 创建`Configuration`对象,指定模板目录,并设置其他选项。 - **加载模板**:...
服务器端的Java代码负责处理业务逻辑,准备数据模型,然后使用Freemarker将这些数据模型渲染成Word文档。这个过程中可能需要使用到HTTP请求和响应,以及文件流处理,以便将生成的Word文档发送到客户端。 5. **模板...
“eclipse freemark插件”是为了在Eclipse中提供对FreeMarker模板语言的集成支持。安装此插件后,开发者可以在Eclipse中直接编写、调试和预览FreeMarker模板,极大地提高了工作效率。 该插件的安装方法相对简单:...
- **构建数据模型**:在Java代码中准备数据,这可以是任何类型,如List、Map等,只要FreeMarker模板能识别并处理即可。 - **渲染模板**:使用FreeMarker API读取模板文件,结合数据模型渲染成HTML字符串。 - **...
4. **使用Java解析模板**:编写Java代码,加载FreeMarker模板,并传递必要的数据参数。通过FreeMarker的API,可以将填充好数据的模板转换为最终的Word文档。 ##### 2.4 示例代码 下面是一个简单的示例代码片段,...
这些对象可以在模板中引用,如 `${user}` 可以获取Map中的"user"键对应的值。可以使用 `[]` 运算符访问对象的属性,如 `${user[email]}`。 四、控制结构 1. 条件语句:FreeMarker支持`if`、`?if`、`<#if>`等语法来...
模板语言则定义了如何在模板中引用和操作这些数据。 在FreeMarker 2.3.13中,可能会有以下一些关键知识点: 1. **指令(Directives)**:例如`#if`, `#foreach`, `#include`等,用于控制流程和组合模板内容。 2. *...
提供的实例可能是具体的模板文件和对应的Java代码,展示了如何创建数据模型,如何加载和配置FreeMarker,以及如何使用`Template`类将数据模型和模板结合生成输出。这些实例对于初学者来说非常有价值,可以帮助他们...
标题与描述均提到了“freemark文档”,这实际上是指FreeMarker——一种用于生成动态内容的模板引擎,尤其在Java环境中非常流行。FreeMarker允许开发者创建模板,这些模板能够结合数据模型来生成各种类型的文档,包括...
序列在Freemarker中对应于Java中的List或数组,是一种非键值对的集合。它可以存储一系列有序的元素,支持遍历和索引访问。例如,你可以使用`<#list>`指令来迭代序列中的每个元素,并进行相应的处理。 2. **哈希...
总的来说,"freemark插件"为Eclipse用户带来了专业的Freemarker开发工具集,通过其提供的各种特性,使得在Eclipse中编写和维护Freemarker模板变得更加轻松和高效。对于从事Java Web开发的人员,特别是那些频繁处理...
开发者首先需要准备XML模板,然后在Java代码中加载模板,创建数据模型,调用Freemarker的API进行模板处理,最后将生成的Word文档保存。通过这种方式,我们可以灵活地根据业务需求生成各种定制化的Word报告,而无需...
FreeMarker是一个强大的Java模板引擎,常用于Web应用中的视图层,它允许开发者将业务逻辑与展示逻辑分离,使得前端人员可以专注于页面设计,而无需深入理解后端代码。本教程资料合集针对FreeMarker提供了详尽的中文...
- 在Java代码中,使用`Freemarker`实例加载模板,创建`Configuration`对象,设置模板目录,然后创建`Template`对象。接着,创建`Map, Object>`来存储数据模型,最后调用`Template`的`process`方法将数据合并到模板...
在开发过程中,这些FTL文件会与后台Java代码配合工作,后端通过Freemarker API将数据模型传递给前端模板,模板引擎负责解析和渲染模板,生成最终的HTML页面。此外,Freemarker支持自定义函数和指令,可以扩展其功能...
- **Sequence**:在Freemarker中,Sequence代表有序的数据集合,类似于Java中的List或数组。它可以包含任意类型的元素,如数字、字符串或自定义对象。 - **Hash**:Hash是键值对的集合,类似于Java中的Map。每个键...
- **直接调用Java对象的方法**:在模板中可以直接引用Java对象并调用其方法。 - **字符串处理**:Freemarker提供了多种字符串操作的内置方法。 - **sequences和hashes初始化**:在模板中初始化序列和哈希结构。 ...