- 프로그램 문법
- 프로그램 기초
- 내장 상수
- 상수/변수
- 함수
- 데이터 할당
- 기타 확장 문법
- Template 문법
- Template 기초
- Template 상수/변수
- Template 함수
- Template 포함
- Template 분기 및 순환
- Template 확장 문법
- 관리자 매뉴얼
- 참고 문헌
Java 기반의 Template Engine인 FreeMarker을 정리 한다.
홈페이지 : http://freemarker.org/
라이선스 : BSD-style license
플랫폼 : Java
프로그램 문법
프로그램 기초
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>
#directivename>
주석
<#-- ~ -->
white space와 carriage return을 제외하고 브라우저에 전달
<#compress>
~
#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>
#if>
List 반복문
<#list 배열객체 as 로컬엘리어스명>
<#break>
#list>
Template 확장 문법
매크로
<@매크로명 변수1, 변수2, ... />
<#macro greet person="Default">
Hello ${person}!
<#nested>
#macro>
<@greet person="Fred">
Nested에 포함된 문자열
@greet>
관리자 매뉴얼
참고 문헌
분류: 오픈소스
Java
Template_Engine
최종 수정일: 2024-09-30 12:26:18
이전글 :
다음글 :