사용자 도구

사이트 도구


java:template_engine:freemarker

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:template_engine:freemarker [2013/12/01 16:41]
kwon37xi
java:template_engine:freemarker [2015/11/26 21:14] (현재)
kwon37xi [Template Cache]
줄 1: 줄 1:
 ====== Freemarker ====== ====== Freemarker ======
-  * http://freemarker.sourceforge.net/+  * http://freemarker.org/
   * [[http://freemarker.sourceforge.net/docs/app_faq.html|Freemarker FAQ]]   * [[http://freemarker.sourceforge.net/docs/app_faq.html|Freemarker FAQ]]
   * [[http://documentation.magnolia-cms.com/reference/templating/freemarker.html|Templating with FreeMarker - a primer]]   * [[http://documentation.magnolia-cms.com/reference/templating/freemarker.html|Templating with FreeMarker - a primer]]
줄 10: 줄 10:
 ===== null 검사 ===== ===== null 검사 =====
   * http://www.j2eeprogrammer.com/2008/12/check-for-null-in-freemarker-24.html   * http://www.j2eeprogrammer.com/2008/12/check-for-null-in-freemarker-24.html
 +  * [[http://freemarker.incubator.apache.org/docs/dgui_template_exp.html|Expressions]] - Handling missing values 참조.
 +  * ''??'' null이 아닌지 테스트
 <code> <code>
  
-- null가?+- null이 아닌가?(아니면 true)
 <#if aVariable??> <#if aVariable??>
  
줄 29: 줄 31:
  
 ===== null 기본값 ===== ===== null 기본값 =====
-''!기본표현식''이 가능하다. 단, ''!기본표현식'' 뒤에 다른 표현식이 오면 꼭 괄호로 감싸야한다.+  * ''!기본표현식''이 가능하다. 
 +  * 단, **''!기본표현식'' 뒤에 다른 표현식이 오면 꼭 괄호로 감싸야한다.** 
 +  * null 일 경우 기본값으로 대체. 기본값표현식을 생량하고 ''!''만 쓰면 빈 문자열, 빈 시퀀스, 빈 해시를 나타내게 된다.
  
 <code> <code>
줄 62: 줄 66:
   * JSP의 Function 커스텀 태그 같이 함수 역할의 모델을 만들어 사용할 수 있다.   * JSP의 Function 커스텀 태그 같이 함수 역할의 모델을 만들어 사용할 수 있다.
   * [[http://freemarker.sourceforge.net/docs/pgui_datamodel_method.html|Datamodel - Method]]   * [[http://freemarker.sourceforge.net/docs/pgui_datamodel_method.html|Datamodel - Method]]
-  * [[http://freemarker.sourceforge.net/docs/api/freemarker/template/TemplateMethodModel.html|freemarker.template.TemplateMethodModel]] : 모든 인자를 문자열로 변환하는 메소드 모델+  * [[http://freemarker.sourceforge.net/docs/api/freemarker/template/TemplateMethodModel.html|freemarker.template.TemplateMethodModel]] : 모든 인자를 문자열로 변환하는 메소드 모델. deprecated
   * [[http://freemarker.sourceforge.net/docs/api/freemarker/template/TemplateMethodModelEx.html|freemarker.template.TemplateMethodModelEx]] : 인자의 데이터 형을 그대로 유지하는 메소드 모델   * [[http://freemarker.sourceforge.net/docs/api/freemarker/template/TemplateMethodModelEx.html|freemarker.template.TemplateMethodModelEx]] : 인자의 데이터 형을 그대로 유지하는 메소드 모델
  
-===== BeansWrapper =====+===== TemplateDirectiveModel ===== 
 +  * 커스텀 지시자(Directive)를 만든다. 
 +  * [[http://freemarker.incubator.apache.org/docs/api/freemarker/template/TemplateDirectiveModel.html|TemplateDirectiveModel]] 
 +  * [[http://freemarker.incubator.apache.org/docs/pgui_datamodel_directive.html|Freemarker Directives]] 
 + 
 +===== ObjectWrapper ===== 
 +  * [[http://freemarker.incubator.apache.org/docs/pgui_datamodel_objectWrapper.html|ObjectWrappers]] 
 +  * Freemarker에서 템플릿에 전달된 데이터 모델 객체를 템플릿에 적합하게 변환하는 역할. 
 + 
 +==== ObjectWrapperAndUnwrapper ==== 
 +  * [[http://freemarker.incubator.apache.org/docs/api/freemarker/template/ObjectWrapperAndUnwrapper.html|ObjectWrapperAndUnWrapper]] 
 +  * ''TemplateModel''로 변환된 모델에서 원래의 Java 객체를 빼내는 역할. 대부분의 ObjectWrapper는 이 인터페이스를 구현한다. 
 + 
 +==== BeansWrapper ====
   * [[http://freemarker.sourceforge.net/docs/pgui_misc_beanwrapper.html|BeanWrapper]]   * [[http://freemarker.sourceforge.net/docs/pgui_misc_beanwrapper.html|BeanWrapper]]
   * [[http://freemarker.sourceforge.net/docs/api/freemarker/ext/beans/BeansWrapper.html|freemarker.ext.beans.BeansWrapper]] 객체를 생성하지 않고 Reflection으로 Freemarker에서 사용하는 모델을 만들어준다.   * [[http://freemarker.sourceforge.net/docs/api/freemarker/ext/beans/BeansWrapper.html|freemarker.ext.beans.BeansWrapper]] 객체를 생성하지 않고 Reflection으로 Freemarker에서 사용하는 모델을 만들어준다.
- 
  
 ===== 설정 ===== ===== 설정 =====
 ==== 숫자 포맷팅 ==== ==== 숫자 포맷팅 ====
-  * 기본적으로 로케일에 따라 쉼표 혹은 마침표를 붙여주는 방식으로 숫자를 출력하므로 보통 숫자로 출력하려면 아래와 같4ㅡ 설정이 필요하다.<code java>+  * 기본적으로 로케일에 따라 쉼표 혹은 마침표를 붙여주는 방식으로 숫자를 출력하므로 보통 숫자로 출력하려면 아래와 같은 설정이 필요하다.<code java>
 cfg.setNumberFormat("0.######");  // now it will print 1000000 cfg.setNumberFormat("0.######");  // now it will print 1000000
 +</code>
 +==== Template Cache ====
 +캐시를 지정해 속도를 높여야 한다.
 +[[http://freemarker.incubator.apache.org/docs/pgui_config_templateloading.html|Template loading]] 참조.
 +
 +<code java>
 +cfg.setTemplateUpdateDelayMilliseconds(3600000L); // 1hour 템플릿 파일 갱신 여부 체크 주기
 +cfg.setCacheStorage(new MruCacheStorage(500, 5000)); // strong 500, soft 5000
 </code> </code>
  
 +  * ''MruCacheStorage'' 캐싱 전략은 ''strong''에 템플릿을 캐시하다가 꽉차면 least recently used 템플릿을 ''soft'' 영역으로 옮긴다.
 +    * ''strong'' : JVM Full GC 시에도 GC 대상에 들어가지 않는다.
 +    * ''soft'' : JVM Full GC 시에 GC 대상이 된다.
 +    * 기본값은 ''strong=0'', ''soft=Integer.MAX_VALUE''
 +    * ''strong''을 템플릿 갯수와 Heap 할당량에 따라 명시적으로 지정해주는 것이 좋다.
  
java/template_engine/freemarker.1385883693.txt.gz · 마지막으로 수정됨: 2013/12/01 16:41 저자 kwon37xi