FreeMarker
# 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
# 출처 : http://www.gurubee.net/display/SWDEV/FreeMarker?
3.1 FreeMarker
- freemarker 설명 및 기본 예제
- 프리마커 홈페이지 : http://www.freemarker.org/
* 아래 내용은 http://blog.daum.net/younwoomom/6685378 의 내용을 정리한 자료 입니다.
Freemarker 사용법
1. @macro
프리마커 템플릿 전역에서 공통으로 사용되는 UI 디펜던트한 함수는 매크로로 만들어 여러 ftl에서 사용할 수 있도록 해준다. 샘플을 참고하도록 한다.
형식 : <@매크로명 변수1, 변수2, ... />
샘플1) 긴 문자열을 적당한 크기로 자르는 기능의 매크로
*사용법 :
<@trimX item.title, 20 />
*매크로 :
<#macro trimX src max><#compress> <#if src?length > max> ${src[OSF:0..max-1]} <#else> ${src} </#if> </#compress></#macro>
샘플2) YYYYMMDD 형식의 문자열을 YYYY.MM.DD 형식으로 변환하는 매크로
*사용법 :
<@parseDay item.regdate />
*매크로 :
<#macro parseDay src><#compress> <#if src?length == 8> ${src[OSF:0..3]}.${src[OSF:4..5]?number}.${src[OSF:6..7]?number} <#else> ${src} </#if> </#compress></#macro>
2. #list
배열 형식의 오브젝트를 루핑 처리할때 사용하는 프리마커 지시자이다. "로컬엘리어스_index" 라는 변수는 0부터 시작하는 시퀀스번호이다.
형식 : <#list 배열객체 as 로컬엘리어스명></#list>
샘플1)
<#list LIST as item> 번호 : ${item_index+1} | 이름 : ${item.name} | 아이디 : ${item.id} </#list>
3. #if
프리마커 조건문에 사용되는 지시자이다.
형식 : <#if 조건식></#if>
샘플1) string 비교
<#if ENTITY.usergrade == "A" >......</#if>
샘플2) number 비교
<#if ENTITY.userclass?number == 3>.....</#if>
샘플3) boolean 비교
<#if ENTITY.isAuth()>.....</#if>
4. #break
Loop문을 중단하고 다음 스크립트로 넘어가려고 할때 사용되는 지시자이다.
형식 : <#break>
샘플1) 루프문을 실행하는 중 5번째에서 escape 하는 예
<#list LIST as item> <#if item_index > 3><#break></#if> </#list>
5. #assign
프리마커내에서 사용자 정의 로컬변수가 필요할 때 사용하는 지시자이다.
형식 : <#assign 로컬변수명 = 초기화값>
샘플1)
<#assign CHECK = item_index>
<#assign CHECK = item_index>
6. [OSF: x...y]
문자열의 일정 범위를 자를때 사용하는 함수
형식 :
${문자열[OSF: 1..5 ]}
샘플1)
${item.name[OSF:1..5]}
${item.name[OSF:1..5]}
7. ?has_content
리스트형 오브젝트가 null이 아니고 최소 1개 이상의 컨텐츠를 가지고 있는지 체크하는 함수로써 ?has_content는 ?exists와 ?size>0 두가지 체크를 동시에 해주는 함수이다.
형식 : 리스트오브젝트?has_content
샘플1)
<#if LIST?has_content>.....</#if>
<#if LIST?has_content>.....</#if>
8. ?exists
NULL체크 함수. if_exists는 <#if 지시자 없이도 사용할 수 있게 해주는 표현식이다.
형식 : 오브젝트?exists
샘플1)
<#if ENTITY.username?exists>${ENTITY.username?substring(0, 5)}</#if>
<#if ENTITY.username?exists>${ENTITY.username?substring(0, 5)}</#if>
샘플2)
<#if LIST?exists && LIST?size > 0>.....</#if>
<#if LIST?exists && LIST?size > 0>.....</#if>
샘플3)
${ENTITY.username?if_exists}
${ENTITY.username?if_exists}
9. ?default
NULL값을 대체해주는 함수
형식 : 오브젝트?default(디폴트값)
샘플1)
${item.userclass?default("99")}
${item.userclass?default("99")}
샘플2)
${item.age?default(20)}
${item.age?default(20)}
10. ?string
문자열로 형변환하는 함수
형식 : 오브젝트?string
샘플1)
<#if item.age?string == "29">.....</#if>
<#if item.age?string == "29">.....</#if>
샘플2)
${item.regdate?string("yyyy/MM/dd HH:mm")}
${item.regdate?string("yyyy/MM/dd HH:mm")}
샘플3) 숫자를 통화표시로 나타내는 예
<#assign MONEY = 1234567>
${MONEY?string(",##0")}
11. ?number
숫자로 형변환하는 함수
형식 : 오브젝트?number
샘플1)
<#if item.userclass?number > 3>.....</#if>
<#if item.userclass?number > 3>.....</#if>
샘플2)
${LIST_POINTS[OSF:item.gid?number].entityname?default("")}
${LIST_POINTS[OSF:item.gid?number].entityname?default("")}
12. ?js_string
문자열을 자바스크립트에 유효하도록 필터링해주는 함수.
문자열내에 싱글쿼테이션(')등이 포함되어 스크립트에 오류가 나는것을 방지하기 위하여 사용되는 함수이다.
화면상에는 HTML 태그로 취급된다.
형식 : 오브젝트?js_string
샘플1)
문자열 <img src='/image/enterprise.gif'>을 js_string으로 처리했을때 소스보기를 하면 <img src=\'/image/enterprise.gif\'>으로 출력된다.
샘플2)
<a href="javascript:getName('${item.homeurl?js_string}');">
<a href="javascript:getName('${item.homeurl?js_string}');">
13. ?html
문자열을 HTML Symbolic Entity로 필터링해주는 함수. 문자열내의 HTML태그등을 깨뜨려 화면상으로 출력되도록 할때 사용하는 함수이다. 화면상에 HTML태그가 아닌 일반 문자열로 취급된다.
형식 : 오브젝트?html
샘플1)
문자열 <img src='/image/enterprise.gif'>을 html로 처리하면 화면상에 <img src='/image/enterprise.gif'> 로 출력되고 소스보기를 하면 <img src='/image/enterprise.gif'>로 출력된다.
14. ?index_of
특정 문자(열)가 시작되는 위치를 정수형으로 반환한다. 인덱스는 0부터 시작됨.
형식 : 오브젝트?index_of(특정문자)
샘플1)
"abcde"?index_of("c") 는 2를 반환한다.
"abcde"?index_of("c") 는 2를 반환한다.
15. ?replace
문자열의 일부를 주어진 문자로 대체하는 함수
형식 : 오브젝트?replace(찾을문자열, 대체할문자열)
샘플1)
${item.content?replace(">", ">")}
${item.content?replace(">", ">")}
16. item_has_next
리스트 객체의 다음 컨텐츠가 존재하는지(EOF) 체크하는 함수
형식 : 리스트엘리어스이름_has_next
샘플1) 이름과 이름사이에 , 를 찍어주되 마지막은 찍지 않는 경우의 예
<#list LIST as item> ${item.name?default("")}<#if item_has_next>,</#if> </#list>
문서에 대하여
- 이 문서는 http://blog.daum.net/younwoomom/6685378 의 내용을 참고하여 작성하였습니다.
- 최초작성자 : 김정식
- 최초작성일 : 2008년 1월 15일
- 이 문서를 다른 블로그나 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
# 이 문서는 오라클클럽에서 작성하였습니다.
# 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
# 출처 : http://www.gurubee.net/display/SWDEV/FreeMarker?