1、 FreeMarker主页
http://www.freemarker.org/index.html
2、
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.OutputStreamWriter;
- import java.io.Writer;
- import java.util.HashMap;
- import java.util.Map;
- import freemarker.template.Configuration;
- import freemarker.template.Template;
- public class Test1 {
- private Configuration cfg;
- public Configuration getCfg() {
- return cfg;
- }
- public void init() throws Exception {
- cfg = new Configuration();
- //cfg.setDirectoryForTemplateLoading(new File("bin/freemarker"));
- cfg.setDirectoryForTemplateLoading(new File("src/test/java/com/alibaba/panama/core"));
- }
- public static void main(String[] args) throws Exception {
- Test1 obj = new Test1();
- obj.init();
- Map root = new HashMap();
- root.put("hello", "world");
- root.put("hi", "welcome");
- Map map2 = new HashMap(); map2.put("a", "A"); map2.put("b", "B");
- root.put("m", map2);
- Template t = obj.getCfg().getTemplate("Test1.ftl");
- Writer out = new OutputStreamWriter(new FileOutputStream("Test1.html"), "UTF-8");
- t.process(root, out);
- System.out.println("Successfull................");
- }
- }
模版:Test1.ftl
- <#macro greet person,website>
- Hello ${person}! Your Website is ${website}.
- </#macro>
- <html>
- <head>
- <title>Hello World</title>
- </head>
- <body>
- <@greet person="老紫竹" website="www.java2000.net"/>
- ${hello}
- ${hi}
- ${m.a}
- </body>
- </html>
运行结果,生成:Test1.htm
- <html>
- <head>
- <title>Hello World</title>
- </head>
- <body>
- Hello 老紫竹! Your Website is www.java2000.net.
- world
- welcome
- A
- </body>
- </html>
同时可参考:http://oecpby.blog.51cto.com/2203338/424590
=========================================================================
rapid_framework项目相关信息
home page:
http://code.google.com/p/rapid-framework/
rapid_framework中处理生成代码的过程:
generateByMap->ProcessUtils类中的各种方法->processByGeneratorModel->generateBy->processTemplateRootDirs->scanTemplatesAndProcess->executeGenerate -> processTemplateForGeneratorControl -> process(FreeMarker的Template类的process方法)
=======================
freemarker模板:
- package ${basepackage};
- import org.junit.Test;
- import static junit.framework.Assert.*;
- public class ${className} {
- <#list caseSuite.caseModels as caseModel>
- /**
- * @uid ${caseModel["uid"]}
- * @场景描述 ${caseModel["场景描述"]!}
- * @前置条件 ${caseModel["前置条件"]!}
- * @期望结果 ${caseModel["期望结果"]!}
- * @测试步骤 ${caseModel["测试步骤"]!}
- * @是否自动化执行 ${caseModel["是否自动化执行"]!}
- * @负责人 ${caseModel["负责人"]!}
- */
- <#-- @Test
- public void ${caseModel["方法名"]!"undefined"}(){
- }
- -->
- public void ${caseModel["方法名"]!("undefined${caseModel['uid']}")}(){
- }
- </#list>
- }
===============================================
1、Comments 注释:FreeMarker 的注释和HTML 的注释相似,但是它用<#--和-->来分隔的。任何介于这两个分隔符(包含分隔符本身)之间内容会被FreeMarker 忽略,就不会输出出来了。
2、不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟着一个!和默认值。就像下面的例子,当user 从数据模型中丢失时,模板将会将user 的值表示为字符串”Anonymous”。(若user 并没有丢失,那么模板就会表现出”Anonymous”不存在一样)
<h1>Welcome ${user!"Anonymous"}!</h1>
3、当然也可以在变量名后面通过放置??来询问FreeMarker 一个变量是否存在。将它和if指令合并,那么如果user 变量不存在的话将会忽略整个问候代码段:
<#if user??><h1>Welcome ${user}!</h1></#if>
转载于:https://blog.51cto.com/tianya23/620885