Giả sử các bạn có một danh sách các tên sinh viên và giờ các bạn cần output danh sách tên sinh viên đó sử dụng Apache FreeMarker. Vậy chúng ta sẽ làm như thế nào? Hãy cùng tìm hiểu trong bài viết này các bạn nhé!
Đầu tiên, mình sẽ tạo mới một Maven project để làm ví dụ:
Apache FreeMarker dependency:
1 2 3 4 5 |
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.27-incubating</version> </dependency> |
Tập tin list.ftl không có nội dung và nó sẽ được sử dụng như là một template của Apache FreeMarker.
Class Application có nội dung như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package com.huongdanjava.freemarker; import java.io.StringWriter; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; public class Application { public static void main(String[] args) { Configuration configuration = new Configuration(Configuration.VERSION_2_3_27); configuration.setClassForTemplateLoading(Application.class, "/"); try { Template template = configuration.getTemplate("list.ftl"); StringWriter writer = new StringWriter(); Map<String, Object> map = new HashMap<String, Object>(); map.put("names", Arrays.asList("Khanh", "Nguyen", "Tan")); template.process(map, writer); System.out.println(writer); } catch (Exception e) { e.printStackTrace(); } } } |
Như các bạn thấy, trong phương thức main() của class Application, chúng ta có một đối tượng Configuration được tạo mới với phiên bản 2.3.27 và một đối tượng Template đang sử dụng tập tin template của chúng ta.
Bây giờ, để có thể output danh sách sinh viên mà mình đã truyền vào trong đoạn code trên, mình sẽ thêm nội dung cho tập tin template list.ftl như sau:
1 2 3 |
<#list names as name> ${name} </#list> |
Trong đoạn code trên, mình đã sử dụng tag <#list> của Apache FreeMarker để duyệt qua tất cả các phần tử của danh sách sinh viên names, assign giá trị của từng phần tử vào biến name, sau đó thì output giá trị của biến name này sử dụng placeholder ${name}.
Kết quả: