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




Posted by '김용환'
,