2.3.19 버전 이하의 freemarker를 쓰는 사용자라면, freemarker의 boolean을 사용할 때 유의해야 한다.
member라는 객체의 boolean 변수를 사용할 때는 ${member.vip?string("Yes", "No")}라 써야 한다.
${member.vip?c} 로 표현하면, boolean 변수 표현에 대해 문자열이 아니다고 에러가 발생한다.
freemarker.core.NonStringException:
Expecting a string, date or number here, Expression profile.vip is instead a freemarker.template.TemplateBooleanModel$2
그런데, 2.3.20부터 ${member.vip?c} 와 같이 사용가능하다.
그리고 ${member.vip?string} 는 deprecated 되었다.
또한, 2.3.23 부터 ${member.vip?string("yes", "no")}은 deprecated 되었다.
대신, ${member.vip?then("yes", "no")}으로 변경해야 한다.
(참고로 숫자는 switch? 를 사용한다.)
참고 :
http://freemarker.org/docs/ref_builtins_boolean.html
'general java' 카테고리의 다른 글
객체의 toString()을 구현하는 방법 - apache commons의 ReflectionToStringBuilder vs guava의 Objects (0) | 2016.04.13 |
---|---|
[guava]값 보장 테스트 함수 - Guava의 Preconditions.checkArgument (0) | 2016.04.12 |
[Guava] Iterables.limit() (0) | 2016.03.24 |
anonymous class init 코드에 instance initializer를 넣어 간단한 List 만들기 (0) | 2016.03.24 |
jenkins API 일부 (Jenkin api) - job 정보, job이 실행하는지 여부 (0) | 2016.03.17 |