상단

Java 기반의 Template Engine인 FreeMarker을 정리 한다.

 

프로그램 문법


프로그램 기초

  • web.xml 선언

 
 
   freemarker
   freemarker.ext.servlet.FreemarkerServlet
     
   
   
     TemplatePath
     /
   
   
     NoCache
     true
   
   
     ContentType
     text/html; charset=UTF-8 
   
    
   
   
     template_update_delay
     0 
   
   
     default_encoding
     ISO-8859-1 
   
   
     number_format
     0.##########
   
 
   1
  
 
 
   freemarker
   *.ftl
   
 
  • 선언 및 사용

 
 import freemarker.template.*;
 import java.util.*;
 import java.io.*;
 	
 Map root = null;
 Configuration cfg = null;
 Template temp = null; 
 Writer out = null;
 
 root = new HashMap();
 root.put("user", "Big Joe");
 
 cfg = new Configuration();
 cfg.setLocale("ko_KR");
 cfg.setNumberFormat("0.####");
 cfg.setDirectoryForTemplateLoading(new File("/where/you/store/templates"));
 cfg.setObjectWrapper(new DefaultObjectWrapper());  
 
 out = new OutputStreamWriter(System.out);
 temp = cfg.getTemplate("test.ftl"); 
 temp.process(root, out);
 out.flush();
 

내장 상수

상수/변수

  • Shared variables

 
 cfg.setSharedVariable("company", "Foo Inc.");
 

함수

데이터 할당

  • 데이터 할당

 
 root.put("user", "Big Joe");
 

기타 확장 문법

  • 사용자 정의 함수

 
 public class IndexOfMethod implements TemplateMethodModel {
     public TemplateModel exec(List args) throws TemplateModelException {
         if (args.size() != 2) {
             throw new TemplateModelException("Wrong arguments");
         }
         return new SimpleNumber(
             ((String) args.get(1)).indexOf((String) args.get(0)));
     }
 }  
 root.put("indexOf", new IndexOfMethod());
 
 ${indexOf("met", x)}
 
  • 사용자 정의 Directives

 
 

Template 문법


FTL tags (FreeMarker Template Language tags)는 FreeMarker에서 템플릿 개발에 사용되는 간단한 언어 이다.

 

Template 기초

  • Directives

 
 <#directivename  parameters>
 
 
  • 주석

 
 <#-- ~ -->
 
  • white space와 carriage return을 제외하고 브라우저에 전달

 
 <#compress>
 ~
 
 

Template 상수/변수

  • 변수 정의 및 값 지정

 
 <#assign 로컬변수명 = 초기화값>
 <#assign 로컬변수명 = 초기화값 in my>
  • JSP TagLibrary 지정

 
 <#assign s=JspTaglibs["/WEB-INF/tld/struts-tags.tld"]("/WEB-INF/tld/struts-tags.tld".md) /> 
 <#assign page=JspTaglibs["/WEB-INF/tld/sitemesh-page.tld"]("/WEB-INF/tld/sitemesh-page.tld".md) />
 
 <@s.textfield name = "username" label = "User Name" /> 
 
  • 변수 Type

 
 String, Number, Boolean, Date
 Hash, Sequence, Collection
 
  • 내장 객체

 
 .main 
 .vars
 
 <#global x = 1>
 ${.globals .x}
 
  • 변수

 
 {$var}
 {$var!"Default value"}
 {$var[4](2,)} : 문자열의 특정 부분을 잘라내어 반환
 

Template 함수

Template 포함

  • 외부 파일 포함

 
 <#include "/copyright_footer.html">
 
  • Namespaces를 지정하여 외부 파일 포함

    • 변수명이나 함수명, 매크로명 앞에 Namespaces인 "my."이 붙는다.

 
 <#import "/lib/my_test.ftl" as my>
 

Template 분기 및 순환

  • if 문

 
 <#if 조건식>
 <#elseif 조건식>
 <#else>
 
 
  • List 반복문

 
 <#list 배열객체 as 로컬엘리어스명>
     <#break>
 
 

Template 확장 문법

  • 매크로

 
 <@매크로명 변수1, 변수2, ... />
 <#macro greet person="Default">
     Hello ${person}!
     <#nested>
 
 
 <@greet person="Fred">
     Nested에 포함된 문자열
 
 

관리자 매뉴얼


참고 문헌


 
 

분류: 오픈소스 
Java 
Template_Engine

최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :