general java
[freemarker]boolean 변수 대응하기
'김용환'
2016. 3. 25. 17:34
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