代码:
import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import freemarker.cache.TemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; public class StringTemplateLoader implements TemplateLoader { private String template; public StringTemplateLoader(String template) { this.template = template; if (template == null) { this.template = ""; } } public Object findTemplateSource(String name) throws IOException { return new StringReader(template); } @Override public long getLastModified(Object templateSource) { return 0; } public Reader getReader(Object templateSource, String encoding) throws IOException { return (Reader) templateSource; } public void closeTemplateSource(Object templateSource) throws IOException { ((StringReader) templateSource).close(); } public static void main(String[] args) throws Exception { Configuration cfg = new Configuration(); cfg.setTemplateLoader(new StringTemplateLoader("..Hello,${user}!")); Map root = new HashMap(); root.put("user", "Jack"); StringWriter writer = new StringWriter(); long start = System.currentTimeMillis(); Template template = cfg.getTemplate(""); template.process(root, writer); System.out.println(System.currentTimeMillis() - start); System.out.println(writer.toString()); } }
相关推荐
4. **模板测试**: 可以使用FreeMarker提供的API编写单元测试,确保模板的正确性。 总结起来,FreeMarker是一款强大且灵活的模板引擎,它通过分离视图和逻辑,提高了Web开发的效率。理解和熟练运用FreeMarker的语法...
- `join()`:将序列元素用指定字符连接成字符串。 ### 5. 数学运算 FreeMarker支持基本的数学运算,如加、减、乘、除和取余数: - `${a + b}`:加法。 - `${a - b}`:减法。 - `${a * b}`:乘法。 - `${a / b}`:...
普通变量引用通常用于输出简单的字符串或者数值类型的数据。例如: ``` ${answer} ``` 输出结果为 `42`。 同时,还可以利用`?`操作符进行类型转换,例如: ``` ${answer?string} 输出 "42" --> ${answer?string...
5. SpringMVC控制器接收到请求后,将数据模型(包括Base64字符串)传递给Freemarker模板。 6. Freemarker根据模板和数据模型生成最终的Word文档。 7. 将生成的Word文档返回给客户端下载或在线预览。 这个项目的实现...
1. 准备数据:根据模板结构,构建相应的Java对象或集合,这些对象将作为数据模型传递给FreeMarker。 五、生成Excel 1. 加载模板:使用`Configuration`对象加载FTL模板文件。 2. 模板渲染:将数据模型与模板结合,...
4. **渲染模板为PDF**:使用Freemarker API,将模板和数据模型结合,生成HTML字符串。然后,借助PDF库(如iText或Apache FOP)将HTML转换为PDF文件。这个过程可能需要处理CSS样式、图片嵌入等问题。 5. **文件导出*...
然后,配置Freemarker模板的路径,创建一个`Template`对象,用以加载模板文件。 在模板文件中,我们可以设计好Word的布局,包括表格和图片的位置。使用`<#foreach>`标签,可以遍历数据模型中的列表,动态插入图片。...
4. **函数和方法**:Freemarker支持自定义函数和方法,可以使用内置的函数库,如字符串操作、数学计算等,也可以扩展自定义函数来满足特定需求。 5. **模板继承和导入**:通过`<#import>`和`<#extends>`,模板可以...
首先,你需要从`Configuration`对象中获取模板,然后用它和数据模型一起生成字符串输出: ```java Template template = cfg.getTemplate("template.ftl"); Map, Object> model = new HashMap(); model.put("user", ...
2. 数据模型:这是提供给Freemarker模板的数据源,通常由应用程序创建并传递给Freemarker,可以包含各种类型的对象,如字符串、数字、列表、地图等。 3. 模板处理:Freemarker引擎接收模板和数据模型,然后生成最终...
变量可以通过`${}`访问,例如`${username}`,支持基本的算术运算和字符串操作。表达式可以是简单的变量引用,也可以是复杂的Java表达式。 9. **模板继承和导入** Freemarker支持模板继承,可以定义一个基础模板,...
3. **图片插入**:在生成的Word文档中插入图片,需要将图片转换为适合Word格式的数据,例如Base64编码的字符串。在Freemarker模板中,可以定义一个变量来存储这个编码,然后在Word模板中使用这个变量插入图片。 4. ...
例如,使用Flying Saucer,你可以创建一个`ITextRenderer`实例,设置其输出为PDF,然后用HTML字符串渲染。 6. **保存或输出PDF**:最后,将生成的PDF保存到文件系统,或者直接作为HTTP响应发送给用户。 在`java_...
3. 日期值的插值同样根据默认格式转换为文本输出,也可以使用内建的字符串函数进行格式化。 4. 布尔值的插值会将表达式结果根据默认格式转换成文本输出,并支持自定义“真”、“假”的输出格式。 数字格式化的插值...
- **Hello World**:一个简单的模板,展示如何输出字符串。 - **条件语句**:使用`<#if>`和`<#else>`展示条件分支。 - **循环**:`<#list>`用于遍历数组、列表或集合。 - **变量赋值**:`<#assign>`用于创建和修改...
- 使用Freemarker API创建`Template`对象,加载指定的模板文件。 - 创建一个`Configuration`对象,设置模板路径、字符编码等。 - 将数据模型与模板结合,调用`Template`对象的`process`方法生成HTML字符串。 6. ...
加载模板文件,如`"index.ftl"`,然后用数据模型渲染成字符串: ```java Template template = cfg.getTemplate("index.ftl"); StringWriter writer = new StringWriter(); template.process(dataModel, writer)...
5. **输出XML**:生成的XML字符串可以写入文件或直接用于其他操作。 通过上述步骤,你可以利用Freemarker动态生成XML文件。值得注意的是,Freemarker支持条件判断、循环、函数调用等多种复杂逻辑,使得XML生成更加...
- **渲染模板**:使用FreeMarker API读取模板文件,结合数据模型渲染成HTML字符串。 - **生成PDF**:通过iText或PDFBox将渲染后的HTML转换为PDF。这里可能需要处理CSS样式,确保PDF布局与HTML一致。 - **输出或...
string`将非字符串转换为字符串,`?length`获取数组或集合的长度等。 5. **模板配置**:通过`freemarker.properties`配置文件,可以设置模板解析的全局行为,如模板的编码、错误处理模式、日期时间格式等。 6. **...