<FreeMarker> Łukasz Monkiewicz
Plan prezentacji Co to jest FreeMarker ? Jak to działa ? Szablony Przykład Podsumowanie
Co to jest FreeMarker ? FreeMarker jest biblioteką Javy, która pozwala na generowanie wszelkiego rodzaju tekstowych danych na podstawie wczesniej zdefiniowanych szablonów.
Jak to działa ?
Szablony <#-- user = "Użytkownik" --> ${user[0]}${user[4]} <#-- Uk --> ${user[1..4]} <#-- żytk --> <#-- x = 5 --> ${x * x - 100} <#-- -75 --> ${x / 2} <#-- 2.5 --> ${12 % 10} <#-- 2 --> ${1.1?int} <#-- 1 --> <#-- test = "Tom & Jerry" --> ${test?html} <#-- Tom & Jerry --> ${test?upper_case?html} <#-- TOM & JERRY --> ${repeat("What", 3)} <#-- WhatWhatWhat -->
Szablony <#if condition> ... <#elseif condition2> <#switch value> <#case refValue1> ... <#break> <#case refValue2> <#case refValueN> <#default> </#switch> <#list sequence as item> ... </#list>
Szablony <#macro test foo bar="Bar" baaz=-1> Test text, and the params: ${foo}, ${bar}, ${baaz} </#macro> <@test foo="a" bar="b" baaz=5*5-2/> <@test foo="a" bar="b"/> <@test foo="a" baaz=5*5-2/> <@test foo="a"/> Test text, and the params: a, b, 23 Test text, and the params: a, b, -1 Test text, and the params: a, Bar, 23 Test text, and the params: a, Bar, -1
Przykład - dane public class User { private String name; private String lastname; private int age; public User(String name, String lastname, int age){ setName(name); setLastname(lastname); setAge(age); } // get... // set...
Przykład - dane Configuration cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(new File("template")); cfg.setObjectWrapper(new DefaultObjectWrapper()); Map lang = new HashMap(); lang.put("name", "Imię"); lang.put("lastname", "Nazwisko"); lang.put("age", "Wiek"); lang.put("userList","Lista użytkowników"); lang.put("date", "Data"); List users = new ArrayList(); users.add(new User("Jan", "Kowalski", 25)); users.add(new User("Anna", "Nowak", 27)); users.add(new User("Stefan", "Jakiśtam", 30)); Map root = new HashMap(); root.put("lang",lang); root.put("users",users); root.put("date",new Date()); Template temp = cfg.getTemplate("userlist.ftl"); Writer out = new OutputStreamWriter(System.out); temp.process(root, out); out.flush();
Przykład - szablon ################################## ${lang.userList} ${lang.date}: ${date?string("dd-MM-yyyy HH:mm:ss")} <#assign counter = 1 /> <#list users as user> ${counter}. ${lang.name}: ${user.name} ${lang.lastname}: ${user.lastname} ${lang.age}: ${user.age} ---------------------------------- <#assign counter = counter +1 /> </#list>
Przykład - wynik ################################## Lista użytkowników Data: 29-11-2005 17:23:00 1. Imię: Jan Nazwisko: Kowalski Wiek: 25 ---------------------------------- 2. Imię: Anna Nazwisko: Nowak Wiek: 27 3. Imię: Stefan Nazwisko: Jakiśtam Wiek: 30
Podsumowanie Prostota użycia Duże możliwości Możliwość użycia w dowolnej aplikacji Dostępny plugin do wielu IDE Więcej informacji: http://freemarker.sourceforge.net