1. null 체크는 ??로 한다. '변수 == null ?'
freemarker에서는 null check는 ?? 로 이용하면 된다.
<#if userList??>
<#list userList as id >
${id}
</#list>
</#if>
else if 는 항상 붙여 쓴다.!! #elseif
2. conditional statement(if 문)에서는 '='은 두번 쓰지 않는다. 하나의 = 만을 쓴다.
<#if category = "home">
<#elseif category = "content">
</#if>
3. map 의 모든 요소 표현
Map<String, String> (O)
Map<String, Object> (X)
<#list hashMap?keys as it>
${it} = ${hashMap[it]}
</#list>
이런 표현식의 주의점은 map의 value 값이 String, Date, Number 타입이 아닌 타입이 들어왔을 가능성이 높다. 아니면, Object 여도 안된다.
예를 들어 Map 안에 key가 "key" 인데, value가 Collection type이나 Object type이면 아래와 같은 에러가 발생할 것이다.
ERROR ~ Template processing error: "Error on line 37, column 29 in searchengine.ftl\nExpecting a string, date or number here, Expression hashMap[it] is instead a freemarker.template.TemplateBooleanModel$2"
4. List of map 표현
List<Map<String, Object>> userList
<#if userList??>
<#list userList as user>
${user.content}
${user.link}
</#list>
</#if>
또는 (역순 출력, 응근히 많이 쓰임)
<#if userList??>
<#list userList?reverse as user>
${user.content}
${user.link}
</#list>
</#if>
#list 에서 {$user.content}를 사용하고 있지만 if/elseif 문에서는 무장해제를 변수를 시켜야 한다.
// 잘못된 표현
<#if ${user. content} == 'abc'> abc </#if>
// 좋은 표현
<#if user. content == 'abc'> abc </#if>
5. List 표현
List<String> userList
<#if userList??>
<#list userList as activityId >
${activityId}
</#list>
</#if>
더 좋은 정보
http://viralpatel.net/blogs/iterate-hashmap-in-freemarker-ftl/
6. 숫자 관련
high chart 연동하면서 실수한 부분인데..
freemarker는 디폴트로 1000 이상의 숫자는 ,(comma)를 사용한다. 따라서 json의 배열 요소를 나누는 , 와 1,000의 , 가 동시에 사용될 수 있는 단점이 있다.
이를 위해서는 아래와 같이 하면 1,000 대신 1000 이라는 숫자만 출력한다.
${x?c}
참고로, 아래 내용을 참고한다.
<#assign x = 1000> ${x} <#-- 1,000 --> ${x?string} <#-- 1,000 --> ${x?c} <#-- 1000 --> ${x?string.computer} <#-- 1000 --> |
http://stuartgunter.wordpress.com/2011/09/01/freemarker-default-number-formatting/
[출처] http://knight76.tistory.com/entry/java-listmap%EA%B3%BC-freemark-%EC%97%B0%EB%8F%99
'프레임워크 > FreeMarker' 카테고리의 다른 글
프리마커 Date형식을 변환 할때 (0) | 2015.11.20 |
---|---|
프리마커 문법 (0) | 2015.11.20 |
Freemarker 소개 (0) | 2015.11.06 |
FreeMarker 템플릿 엔진 적용하기 (0) | 2015.10.16 |
FreeMarker 문법 개요 (0) | 2015.10.16 |