Freemarker template engine 개념, 설명 및 예제 - WRAPUP 블로그에 사용된 템플릿 뷰
Freemarker template engine 개념, 설명 및 예제
프리마커 (freemarker) 는 자바 서블릿을 위한 오픈소스 HTML 템플릿 엔진입니다.
템플릿 및 데이터에 따라 텍스트 출력 ( html 웹페이지, 전자메일, 구성파일, 소스코드 등 ) 을 생성하는 Java 라이브러리 입니다.
일반적으로 Java와 같은 범용 프로그래밍 언어는 데이터를 준비하는 데 사용됩니다 (문제 데이터베이스 쿼리, 비즈니스 계산 수행). 그런 다음 Apache FreeMarker는 템플릿을 사용하여 준비된 데이터를 표시합니다. 템플릿에서는 데이터를 표시하는 방법에 중점을두고 있으며 템플릿 외부에서는 어떤 데이터를 표시할지에 중점을 둡니다.
Freemarker 문법
1. @macro
macro는 반복되는 구문에 대해 틀(템플릿)을 미리 지정해 놓고 호출하여 사용할 수 있게 해주는 함수입니다.
nested, return 함수를 사용하여 유연하게 응용하여 사용할 수 있습니다.
<#macro test foo bar baaz>
Test text, and the params: ${foo}, ${bar}, ${baaz}
</#macro>
<#-- call the macro: -->
<@test foo="a" bar="b" baaz=5*5-2/>
- Output
Test text, and the params: a, b, 23
2. #list
배열 형식의 오브젝트를 루핑 처리할때 사용하는 프리마커 지시자입니다.
"로컬엘리어스_index" 라는 변수는 0부터 시작하는 시퀀스번호로 사용할 수 있습니다.
<#list LIST as item>
번호 : ${item_index+1} | 이름 : ${item.name} | 아이디 : ${item.id}
</#list>
3. #if
프리마커 조건문에 사용하는 지시자 입니다.
<#if 조건식>
.....
</#if>
4. #break
Loop를 중단하고 다음 스크립트로 넘어갈 때 사용되는 지시자 입니다.
<#list LIST as item>
<#if item_index > 3><#break></#if>
</#list>
5. #assign
프리마커 안에서 사용자 정의 로컬변수가 필요할 때 사용하는 지시자 입니다.
- TEST 변수명을 item_index 값으로 초기화.
<#assign TEST = item_index>
6. [OSF: x...y]
문자열의 일정 범위를 자를 때 사용하는 함수
${문자열[OSF: 1..5 ]}
7. ?has_content
오브젝트가 null이 아니고 1개 이상의 컨텐츠를 가지고 있는지 체크
<#if LIST?has_content>.....</#if>
8. ?exists
NULL체크 함수. if_exists는 <#if 지시자 없이도 사용할 수 있게 해주는 표현식이다
<#if ENTITY.username?exists>${ENTITY.username?substring(0, 5)}</#if>
9. ?default
NULL값을 대체해주는 함수
${item.age?default(20)}
10. ?string
문자열로 형변환하는 함수
<#if item.age?string == "123">.....</#if>
11. ?number
숫자로 형변환하는 함수
<#if item.userclass?number > 123>.....</#if>
12. ?js_string
문자열을 자바스크립트에 유효하도록 필터링해주는 함수.
문자열내에 싱글쿼테이션(')등이 포함되어 스크립트에 오류가 나는것을 방지하기 위하여 사용되는 함수이다.
화면상에는 HTML 태그로 취급된다.
문자열 <img src='/image/enterprise.gif'>을 js_string으로 처리했을때 소스보기를 하면
<img src=\'/image/enterprise.gif\'>으로 출력된다.
13. ?html
문자열을 HTML Symbolic Entity로 필터링해주는 함수. 문자열내의 HTML태그등을 깨뜨려 화면상으로 출력되도록 할때 사용하는 함수이다.
화면상에 HTML태그가 아닌 일반 문자열로 취급된다.
문자열 <img src='/image/enterprise.gif'>을 html로 처리하면 화면상에 <img src='/image/enterprise.gif'> 로 출력되고
소스보기를 하면 <img src='/image/enterprise.gif'>로 출력된다.
14. ?index_of
특정 문자(열)가 시작되는 위치를 정수형으로 반환한다. 인덱스는 0부터 시작됨.
"abcde"?index_of("c") 는 2를 반환한다.
15. ?replace
문자열의 일부를 주어진 문자로 대체하는 함수
${item.content?replace(">", ">")}
16. item_has_next
리스트 객체의 다음 컨텐츠가 존재하는지(EOF) 체크하는 함수
<#list LIST as item>
${item.name?default("")}<#if item_has_next>,</#if>
</#list>