본문 바로가기
카테고리 없음

[Freemarker] 템플릿 특별 변수들(Special Variables)

by 꼬마낙타 2019. 7. 31.
반응형

프리마커 템플릿 언어(Freemarker Template Language)를 이용해서 템플릿을 작성할 때, FTL이 제공하는 특별한 변수들을 알고 있으면 좀 더 템플릿을 잘 짤 수 있다.

 

이 특별 변수를 사용하기 위해서는 템플릿에서 .variable_name 형태로 써야한다. 즉, auto_esc라는 특별 변수를 템플릿에 사용하려면 .auto_esc로 쓰면 된다.

 

프리마커 템플릿 언어의 특별 변수들은 기본적으로 스네이크 표현법을 지원하며 2.3.23 버전부터 카멜 표기법도 제공된다.

 

Freemarker Special Variables 

auto_esc

- auto-escaping 설정 여부를 나타내는 불리언 변수

 

caller_template_name

- 현재 macro 혹은 function이 호출된 템플릿의 이름(경로)

 

current_template_name

- 현재 템플릿의 이름(경로)

 

data_model

- 현재 템플릿이 넘겨 받은 데이터 모델로의 직접 접근(해시). global 디렉티브로 생성되는 변수는 볼 수 없음

 

error

- recover 디렉티브에서 사용되는 변수로 에러 메시지를 접근할 수 있음

 

globals

- data-model로 넘겨 받은 값과 global 디렉티브로 생성된 변수를 접근할 수 있는 해시. assign이나 macro에서 선언된 변수는 global이 아니라서 보이지 않음

 

incompatible_improvements

- 현재 프리마커 설정의 incompatible_improvements 설정 값

 

lang

- 현재 언어 설정. ex) .lang의 경우 en

 

locale

- 현재 로케일 설정. ex) .locale의 경우 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 )

반응형

댓글