Freemarker
is a java based template engine. In
FreeMarker you define templates, which are text files that contain the desired
output, except that they contain placeholders like ${name}, and even some logic
like conditionals, loops, etc. In your Java program you supply the actual
values for these placeholders and the final output is generated based on this
input.
I
am going to explain simple example, which displays list of employees.
hello.ftl
<html> <head> <title>Hello File Marker</title> </head> <body> <ul> <#list employees as employee> <li>${employee.firstName} ${employee.lastName}</li> </#list> </ul> </body> </html>
package com.freemarker; public class Employee { private String firstName; private String lastName; Employee(String firstName, String lastName){ this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
package com.freemarker; import java.io.File; import java.io.FileWriter; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; public class MainTest { public static void main(String[] args) throws Exception { /* The main entry point into the FreeMarker API; * encapsulates the configuration settings of FreeMarker, * also serves as a central template-loading and caching service. */ Configuration cfg = new Configuration(); Map<String, List<Employee>> input = new HashMap<String, List<Employee>> (); List<Employee> employees = new ArrayList<Employee>(); employees.add(new Employee("Hari Krishna", "Gurram")); employees.add(new Employee("Keerthi", "S")); employees.add(new Employee("Upasana", "Ads")); employees.add(new Employee("Ankit", "Suyal")); input.put("employees", employees); /* Retrieves the template with the given name */ Template template = cfg.getTemplate("src\\hello.ftl"); Writer consoleWriter = new OutputStreamWriter(System.out); Writer fileWriter = new FileWriter(new File("output.html")); /* Executes template, using the data-model provided, writing the generated output to the supplied Writer. */ template.process(input, consoleWriter); try { template.process(input, fileWriter); } finally { fileWriter.close(); } } }
Total
structure looks like below.
Run
MainTest.java, you will get output like below in console.
<html>
<head>
<title>Hello File Marker</title>
</head>
<body>
<ul>
<li>Hari Krishna Gurram</li>
<li>Keerthi S</li>
<li>Upasana Ads</li>
<li>Ankit Suyal</li>
</ul>
</body>
</html>
No comments:
Post a Comment