Freemarker template engine 개념, 설명 및 예제 - WRAPUP 블로그에 사용된 템플릿 뷰

가이드문구

Freemarker template engine 개념, 설명 및 예제


프리마커 (freemarker) 는 자바 서블릿을 위한 오픈소스 HTML 템플릿 엔진입니다.

템플릿 및 데이터에 따라 텍스트 출력 ( html 웹페이지, 전자메일, 구성파일, 소스코드 등 ) 을 생성하는 Java 라이브러리 입니다.

일반적으로 Java와 같은 범용 프로그래밍 언어는 데이터를 준비하는 데 사용됩니다 (문제 데이터베이스 쿼리, 비즈니스 계산 수행). 그런 다음 Apache FreeMarker는 템플릿을 사용하여 준비된 데이터를 표시합니다. 템플릿에서는 데이터를 표시하는 방법에 중점을두고 있으며 템플릿 외부에서는 어떤 데이터를 표시할지에 중점을 둡니다.


http://www.freemarker.org/


Freemarker 문법

1. @macro

macro는 반복되는 구문에 대해 틀(템플릿)을 미리 지정해 놓고 호출하여 사용할 수 있게 해주는 함수입니다. 

nested, return 함수를 사용하여 유연하게 응용하여 사용할 수 있습니다.

  1. <#macro test foo bar baaz>
  2. Test text, and the params: ${foo}, ${bar}, ${baaz}
  3. </#macro>
  4. <#-- call the macro: -->
  5. <@test foo="a" bar="b" baaz=5*5-2/>
  1. - Output
  2. Test text, and the params: a, b, 23


2. #list

배열 형식의 오브젝트를 루핑 처리할때 사용하는 프리마커 지시자입니다. 

"로컬엘리어스_index" 라는 변수는 0부터 시작하는 시퀀스번호로 사용할 수 있습니다.

  1. <#list LIST as item>
  2. 번호 : ${item_index+1} | 이름 : ${item.name} | 아이디 : ${item.id}
  3. </#list>


3. #if

프리마커 조건문에 사용하는 지시자 입니다.

  1. <#if 조건식>
  2. .....
  3. </#if>


4. #break

Loop를 중단하고 다음 스크립트로 넘어갈 때 사용되는 지시자 입니다.

  1. <#list LIST as item>
  2. <#if item_index > 3><#break></#if>
  3. </#list>


5. #assign

프리마커 안에서 사용자 정의 로컬변수가 필요할 때 사용하는 지시자 입니다.

  1. - TEST 변수명을 item_index 값으로 초기화.
  2. <#assign TEST = item_index>


6. [OSF: x...y]

문자열의 일정 범위를 자를 때 사용하는 함수

  1. ${문자열[OSF: 1..5 ]}


7. ?has_content

오브젝트가 null이 아니고 1개 이상의 컨텐츠를 가지고 있는지 체크

  1. <#if LIST?has_content>.....</#if>


8. ?exists

NULL체크 함수. if_exists는 <#if 지시자 없이도 사용할 수 있게 해주는 표현식이다

  1. <#if ENTITY.username?exists>${ENTITY.username?substring(0, 5)}</#if>


9. ?default

NULL값을 대체해주는 함수

  1. ${item.age?default(20)}


10. ?string

문자열로 형변환하는 함수

  1. <#if item.age?string == "123">.....</#if>


11. ?number

숫자로 형변환하는 함수

  1. <#if item.userclass?number > 123>.....</#if>


12. ?js_string

문자열을 자바스크립트에 유효하도록 필터링해주는 함수.

문자열내에 싱글쿼테이션(')등이 포함되어 스크립트에 오류가 나는것을 방지하기 위하여 사용되는 함수이다.

화면상에는 HTML 태그로 취급된다.

  1. 문자열 <img src='/image/enterprise.gif'>을 js_string으로 처리했을때 소스보기를 하면
  2. <img src=\'/image/enterprise.gif\'>으로 출력된다.


13. ?html

문자열을 HTML Symbolic Entity로 필터링해주는 함수. 문자열내의 HTML태그등을 깨뜨려 화면상으로 출력되도록 할때 사용하는 함수이다.

화면상에 HTML태그가 아닌 일반 문자열로 취급된다.

  1. 문자열 <img src='/image/enterprise.gif'>을 html로 처리하면 화면상에 <img src='/image/enterprise.gif'> 로 출력되고
  2. 소스보기를 하면 <img src='/image/enterprise.gif'>로 출력된다.


14. ?index_of

특정 문자(열)가 시작되는 위치를 정수형으로 반환한다. 인덱스는 0부터 시작됨.

  1. "abcde"?index_of("c") 는 2를 반환한다.


15. ?replace

문자열의 일부를 주어진 문자로 대체하는 함수

  1. ${item.content?replace(">", ">")}


16. item_has_next

리스트 객체의 다음 컨텐츠가 존재하는지(EOF) 체크하는 함수

  1. <#list LIST as item>
  2. ${item.name?default("")}<#if item_has_next>,</#if>
  3. </#list>


작성자 소개
초이 프로필
WrapUp 블로거

초이

반려견을 좋아하고, 차를 좋아하고, 여행을 좋아하고, 맛집을 찾아 즐기는 웹 개발자 입니다^^