FreeMarker : Example


Freemarker is a simple templating engine that can generate text contents from any type of template. It is so simple that you can learn it in a single day and can use it in any project.
It helps you when you need to produce bulk text contents of the common format like newsletters, green mail, notifications etc.


package fm;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.sun.tools.javac.util.List;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class FMTest2 {
    public static void main(String[] args) throws IOException, TemplateException {
        Configuration cfg = new Configuration();
        cfg.setDirectoryForTemplateLoading(
                new File("templates"));
        cfg.setObjectWrapper(new DefaultObjectWrapper());
        Template temp = cfg.getTemplate("FMTest2.ftl");
        Map root = new HashMap();
    
        Map order = new HashMap();
        order.put("topic""Purchage Order");
        
        ArrayList items=new ArrayList();
        items.add(new HashMap(){{put("cdrom","23000");put("mouse","2230");put("keybord","2230");}});
        items.add(new HashMap(){{put("cdrom","23000");put("mouse","225");put("keybord","530");}});
        items.add(new HashMap(){{put("cdrom","23000");put("mouse","7650");put("keybord","2230");}});
        order.put("items", items);
    
        root.put("order", order);
        /* Merge data-model with template */
        Writer out = new OutputStreamWriter(System.out);
        temp.process(root, out);
        out.flush();
        
    }
}

template file : templates/FMTest2.ftl

Computer Model ${order.topic}   
<#list order.items as i>
  ${i.cdrom}, ${i.mouse}, ${i.keybord}
</#list> 

No comments:

Popular Posts