프리마커 템플릿 언어(FTL, Freemarker Template Language)에는 몇가지 특별한 변수들이 있다. 이 특별 변수들을 사용하기 위해서 템플릿을 작성할 때 '.variable_name' 형태로 사용해야한다. 즉, auto_esc라는 특별 변수를 템플릿에서 사용하려면 .auto_esc로 사용해야한다.
프리마커 템플릿 언어의 특별 변수들은 기본적으로 스네이크 표현법을 지원하며 2.3.23 버전부터 카멜 표기법도 제공된다.
프리마커 특별 변수들
auto_esc
auto-escaping 설정 여부를 의미하는 불리언 변수
caller_template_name
현재 매크로 혹은 함수가 호출된 템플릿의 이름(경로)
current_template_name
현재 템플릿의 이름(경로)
data_model
템플릿이 넘겨 받은 데이터 모델로의 직접 접근(해시). global 디렉티브로 생성되는 변수는 볼 수 없음
error
recover 디렉티브에서 사용되는 변수로 에러 메시지에 접근할 수 있음
globals
data-model로 넘겨 받은 값과 global 디렉티브로 생성된 변수를 접근할 수 있는 해시. assign이나 macro에서 선언된 변수는 global이 아니라서 보이지 않음
incompatible_improvements
현재 프리마커 설정의 incompatible_improvements 설정 값
lang
현재 언어 설정. ex) en
locale
현재 로케일 설정. ex) en_US
locale_object
현재 로케일 설정 값을 java.util.Locale 객체로 반환. 자바 메소드와 함께 사용할 때 쓸 수 있음
locals
로컬 변수들에 접근할 수 있는 해시
main
메인 네임스페이스에 접근할 수 있는 해시. Data-model과 global 변수들은 보이지 않음
main_template_name
최상위 템플릿 이름을 리턴.
namespace
현재 네임스페이스에 접근할 수 있는 해시
node
visitor 패턴으로 처리중인 현재 XML 노드
now
현재 date-time.
output_encoding
현재 출력의 캐릭터 셋(Charset)을 리턴
get_optional_template
존재하지 않을 수 있는 템플릿을 처리할 때 사용되는 메소드. 실행 결과로 다음 3가지 항목이 담긴 해시가 리턴됨
- exists : 템플릿이 존재하는지 여부
- include : 템플릿을 include 할 수 있는 메소드
- import : 템플릿을 import 할 수 있는 메소드
예)
<#assign optTemp = .get_optional_template('some.ftl')>
<#if optTemp.exists>
Template was found:
<@optTemp.include />
<#else>
Template was missing.
</#if>
pass
아무것도 안함. XML 프로세싱에서 no-op 을 명시하기 위해 사용
url_escaping_charset
URL을 인코딩하기 위해 사용해야 할 Charset 정보. 설정되어 있지 않다면, output_encoding 변수에 할당되어 있는 설정을 사용함
output_format
현재 변수의 출력 영역에서의 output format 정보. "HTML", "XML', "RTF", "plainText" 등.
vars
변수들에 접근. vars["varName"]은 varName과 동일
version
프리마커 버전 정보
이런 스페셜 변수들 중에는 상황에 따라서 Null 값을 리턴하는 경우도 있다. 따라서 정확한 사용방법은 프리마커의 관련 매뉴얼 페이지를 참고하기 바란다. (링크 : https://freemarker.apache.org/docs/ref_specvar.html )
댓글