package org.xxx.app.web;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import freemarker.core.Environment;
import freemarker.template.ObjectWrapper;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
public class FreemarkerGobleDataModels implements TemplateDirectiveModel {
public void execute(Environment env, Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body) throws TemplateException, IOException {
Map<String, Object> gobleMap = new HashMap<String, Object>();
gobleMap.put("hello1", "hello 1");
gobleMap.put("hello2", "hello 2");
gobleMap.put("hello3", "hello 3");
gobleMap.put("hello4", "hello 4");
gobleMap.put("hello5", "hello 5");
env.setVariable("gobleMap",
ObjectWrapper.DEFAULT_WRAPPER.wrap(gobleMap));
if (body != null) {
body.render(env.getOut());
}
}
}
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="freemarkerSettings" ref="freemarkerConfiguration" />
<property name="templateLoaderPath">
<value>/WEB-INF/ftl/</value>
</property>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
<entry key="mygoble" value-ref="mygoble"/>
</map>
</property>
</bean>
<bean id="mygoble" class="org.xxx.app.web.FreemarkerGobleDataModels" />
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape" />
<@mygoble />
${gobleMap.hello1}<br/>
${gobleMap.hello2}<br/>
${gobleMap.hello3}<br/>
${gobleMap.hello4}<br/>
${gobleMap.hello5}<br/>
分享到:
相关推荐
开发者可以将这些JAR文件添加到他们的Java项目中,以便在项目中使用FreeMark的功能。 FreeMark的关键知识点包括: 1. **模板语言**:FreeMark的模板语言是一种简单的标记语言,允许在模板中嵌入变量和控制结构。...
在描述中提到的“实现FreeMark读取到json数据”,意味着你可能需要将JSON对象转换为FreeMarker的数据模型。这可以通过使用Jackson或Gson等库来实现。例如,如果你有一个JSON字符串: ```json { "name": "张三", ...
FreeMarker支持更复杂的功能,如宏、指令、自定义标签等,这使得模板可以处理更复杂的逻辑。同时,Apache POI库提供了丰富的API,用于对Word文档进行更细致的控制,比如插入图片、设置样式等。 总结,使用Java和...
在Java项目中,你可以通过Maven或Gradle添加FreeMarker的依赖。配置完成后,你需要创建一个`freemarker.cfg.xml`配置文件,定义模板目录和其他设置。 2. **创建数据模型** 数据模型通常是一个Java的Map或者自定义...
- 在模板中添加错误处理逻辑,比如当变量未定义时输出默认值。 - 在 Java 代码中捕获并处理运行时异常。 通过以上介绍,我们可以看到 FreeMarker 提供了非常丰富的功能和灵活的语法,使得开发者能够高效地生成...
例如,`注释内容 -->`用于添加注释,`${var}`或`#{var}`用于在文本中插入变量的值。 **数据模型**: 数据模型是由程序员创建的,它向模板提供来自数据库、文件或程序动态生成的信息。数据模型包含以下几种主要数据...
FreeMarker还支持宏、指令、模板继承和导入等功能,以实现更复杂的模板逻辑。 **9. 性能优化** 通过缓存模板、合理配置模板加载策略等手段,可以提高FreeMarker的性能。 综上所述,学习在Java中使用FreeMarker,你...
- **宏**:类似于函数,可以复用模板片段。 - **注释**:用于在生成的输出中忽略特定部分。 - **内置函数**:如`date_format`、`list`等,提供对数据的处理能力。 2. **Freemarker与Java的集成** - **...
在设计时,可能会复用部分EditPage的模板代码,通过Freemarker的`<#macro>`宏定义和`<@call>`调用来实现代码复用。 4. **Detail.ftl**:详情页面模板,用于展示单个数据项的所有详细信息。通常包含大量读取性好的...
##### 添加全局共享变量数据模型 使用 `global` 语句。 ```html ``` ##### 直接调用 Java 对象的方法 直接使用对象和方法名。 ```html ${b.method()} ``` ##### 字符串处理(内置方法) Freemarker 提供了一系列...
--#-->` 或 `#{...}` 用于在模板中添加注释,这些注释不会被渲染到最终输出。 - **条件语句**:`<#if>...<#else>...<#endif>` 和 `<#if>...<#elseif>...<#else>...<#endif>` 分别用于条件判断和多条件分支。 2. **...
- 在`pom.xml`文件中添加Freemarker的依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-freemarker ``` - 配置`application.properties`或`application.yml`,指定模板...
这可以通过添加以下配置实现: ```xml ``` 这里我们设置了FreeMarker模板的加载路径,并定义了一个结果类型`freemarker`,将动作结果映射到Freemarker模板。 ### 3. 创建Freemarker模板 在指定的`...
同时,熟悉如何将Freemarker与后端数据模型绑定,以及如何在Spring MVC或其他Web框架中配置和使用Freemarker模板,这些都对使用"freemarker编辑插件"进行高效开发至关重要。 总之,"freemarker编辑插件"作为一款...
6、 用户自定义FTL指令:宏和变换器 7、 节点 节点变量表示为树型结构中的一个节点,通常在XML处理中使用。 在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey...