사용자 도구

사이트 도구


java:template_engine:freemarker

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:template_engine:freemarker [2015/11/20 14:21]
kwon37xi [BeansWrapper]
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>
줄 65: 줄 68:
   * [[http://freemarker.sourceforge.net/docs/api/freemarker/template/TemplateMethodModel.html|freemarker.template.TemplateMethodModel]] : 모든 인자를 문자열로 변환하는 메소드 모델. deprecated   * [[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]] : 인자의 데이터 형을 그대로 유지하는 메소드 모델
 +
 +===== 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 ===== ===== ObjectWrapper =====
줄 82: 줄 90:
   * 기본적으로 로케일에 따라 쉼표 혹은 마침표를 붙여주는 방식으로 숫자를 출력하므로 보통 숫자로 출력하려면 아래와 같은 설정이 필요하다.<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.1447998696.txt.gz · 마지막으로 수정됨: 2015/11/20 14:21 저자 kwon37xi