模板:
<html>
<head>
<title>Hello Word</title>
</head>
<body>
<#list _NewsList.findUserList("sss") as person>
<li>${person.username}--${person.age}--${person.money}</li>
</#list>
</body>
</html>
java代码:
public class MakerHtml {
private Configuration cfg;
public Configuration getCfg() {
return cfg;
}
public void init() throws Exception {
cfg = new Configuration();
BeansWrapper wrapper = (BeansWrapper) BeansWrapper.BEANS_WRAPPER;
wrapper.setExposureLevel(BeansWrapper.EXPOSE_ALL);
InputStream in = null;
try {
in = this.getClass().getClassLoader().getResourceAsStream("freemarkerstatic.properties");
if (in != null) {
Properties props = new Properties();
props.load(in);
Enumeration en = props.keys();
String name, value;
TemplateHashModel staticModels = wrapper.getStaticModels();
while (en.hasMoreElements()) {
name = (String) en.nextElement();
value = props.getProperty(name);
TemplateHashModel tempStatics = (TemplateHashModel) staticModels.get(value);
cfg.setSharedVariable(name, tempStatics);
}
}
} catch (Exception ex) {
} finally {
if (in != null){
try {
in.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
cfg.setObjectWrapper(wrapper);
cfg.setDirectoryForTemplateLoading(new File("build"));
}
public static void main(String[] args) throws Exception {
MakerHtml obj = new MakerHtml();
obj.init();
Map root = new HashMap();
Template t = obj.getCfg().getTemplate("Test1.ftl");
Writer out = new OutputStreamWriter(new FileOutputStream("Test1.html"), "GBK");
t.process(root, out);
System.out.println("Successfull");
}
}
public class Person {
private String username;
private int age;
private double money;
public Person() {
super();
}
public Person(String username, int age, double money) {
super();
this.username = username;
this.age = age;
this.money = money;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
freemarkerstatic.properties 文件:
_Validator=com.njy.freemarker.maker
_Functions=com.njy.freemarker.maker
_EscapeUtils=com.njy.freemarker.maker
_NewsList=com.njy.freemarker.maker
分享到:
相关推荐
springsecurity(用spring ibatis freemaker)实现的用户自定义的权限管理页面, 里头包括数据库脚本 和原数据 和原代码 主要参考http://blog.csdn.net/k10509806/article/details/6369131 这个人的文章做的
在 Freemaker 中,可以通过实现 `TemplateMethodModel` 接口来创建自定义方法。这些自定义方法可以在模板中通过 `${object.method(args)}` 的形式被调用。其中,`object` 是指实现了 `TemplateMethodModel` 接口的 ...
在这个场景中,我们关注的是一个基于FreeMarker(Freemaker)的Java代码生成器。FreeMarker是一个强大的、轻量级的模板引擎,主要用于生成动态Web内容,但在Java世界里,它也被广泛用于生成源代码、配置文件等静态...
在本示例中,“freemaker简单小例子”可能是指如何在Freemarker模板中插入动态数据并渲染成页面。基本流程包括以下几个步骤: 1. **创建Freemarker模板**:在`.ftl`文件中,你可以定义HTML结构,并使用`${...}`或`...
1. **宏**: FreeMarker的宏类似于HTML中的自定义标签,可以复用代码。 2. **包含其他模板**: 使用`<#include>`可以在一个模板中嵌入另一个模板的内容。 3. **条件语句和循环**: FreeMarker支持`<#if>`、`<#else>`...
无论是基础的条件判断、循环遍历,还是高级的自定义方法与Transforms,Freemarker都提供了丰富的功能来满足不同的需求。通过本章的介绍,希望能够帮助开发者快速掌握Freemarker的核心用法,并能够在实际项目中灵活...
4. **函数与方法调用**:模板中可以调用对象的方法和使用内置函数,如`date?string('yyyy-MM-dd')`将日期格式化。 二、Freemaker深入理解 1. **模板继承与导入**:Freemaker支持模板继承,通过`<#import>`和`...
2. **拦截器(Interceptor)**:拦截器是Struts2中的重要概念,它们允许开发者插入自定义的处理逻辑,如日志、权限检查等,这些逻辑可以在Action执行前后运行。 3. **配置灵活性**:Struts2的配置可以通过XML、注解...
FreeMaker是一款强大的模板引擎,常...在实际应用中,可能还会涉及缓存管理、模板错误处理、自定义指令等功能的使用。FreeMarker的强大之处在于其灵活性和扩展性,能够适应各种复杂的场景,为Java Web开发带来便利。
springboot+freemaker+mybatis框架整合的案件后台管理系统,包含案件的excel批量添加,案件跟踪修改,案件每日和每月统计,权限管理(自定义角色)等; 相关技术关键字:springboot freemaker quartz mybatis mysql ...
- **自定义函数库**:用户可以创建自己的函数库,通过`<#function>`和`<#assign>`添加到模板环境中。 4. **文档资源**: - **.chi**文件:可能是Microsoft的CHI索引文件,用于快速查找帮助文档中的内容。 - **....
除此之外,FreeMarker还支持自定义输出转换规则,以满足特定的输出需求。 FreeMarker在处理XML数据方面也表现得非常出色。模板中的`<#recurse>`和`<#visit>`指令使遍历XML树变得简单易行。开发者可以直接在模板中...
这些文件对于理解转换过程和自定义转换逻辑非常有用。 总的来说,这个压缩包提供了一个解决方案,帮助医疗信息系统处理和转化HL7格式的数据,使其能够适应XML或JSON的现代数据格式,从而提高数据交换的效率和兼容性...
- **自定义标签库(Tag Libraries)**:FreeMarker支持自定义标签库,可以扩展其功能。 ### 使用FreeMarker的实际场景 - **Web开发**:在Java Web应用中,FreeMarker常作为视图层技术,与Spring MVC、Struts2等...
15. **自定义函数**:通过`TemplateMethodModelEx`接口,可以实现自定义方法供模板调用,扩展模板语言的功能。 学习FreeMaker,不仅可以提升你的Web应用开发效率,还能让你更好地理解MVC模式下视图层的设计。通过...
FreeMarker模板语言允许用户灵活控制生成代码的格式和内容,比如可以自定义注释、方法名或者类结构。 这个自定义代码生成器的亮点在于其灵活性和可扩展性。用户不再局限于预设的模板,可以根据项目规范和业务需求...
它使用模板和数据模型来生成最终输出,是MVC(Model-View-Controller)架构中的视图...使用FreeMarker文档(如提供的`freemaker.doc`)可以帮助深入学习和理解这些概念,从而更好地利用它来构建高效、灵活的模板系统。
Spring MVC配置Freemarker全局变量,实现应用全路径
2. **自定义指令和函数**:如果你发现内置的指令和函数无法满足需求,可以通过实现`TemplateDirectiveModel`和`TemplateMethodModelEx`接口,创建自己的自定义指令和函数。 3. **模板缓存**:为了提高性能,...