2009년 9월 12일 토요일

Freemaker를 쓰다가 잘 생기는 오류...[펌글]


태생이 JSP 개발자라 그런지 원치는 않았지만 Spring Framework + Sitemesh + Freemaker 를 이용한 프로젝트에 참여후 SM 일을 보고 있습니다.

JSP때도 오류(버그)는 발생하는 일이지만 Freemaker의 경우 좀 더 자주 발생하는 듯 합니다.

Freemaker를 쓰며 자주 발생하는 에러를 모아봤습니다.

1. Null 체크를 하지 않는 경우

특정 객체에 담긴 값을 꺼내 쓰는 경우, 주로 DTO에 담긴 값을 꺼내 쓰는 경우가 많습니다., Null값을 체크하지 않는 경우가 많습니다. JSP 개발시엔 그래도 많은 사람들이 경험을 통해 객체의 Null 여부를 체크하는 경우가 많지만 Freemaker를 쓰면서는 이걸 빼먹는 경우가 많습니다.

객체의 담긴 값을 쓸때는 다음의 Null 값 체크를 꼭 하셔야 합니다.

<#if myObject.value?exists>
    //.... 뭔가를 수행 ....
</#if>

2. int 또는 long 등의 Number 타입의 값을 사용하는 경우

제가 Freemaker 전문은 아니라 이게 Default인지 설정인지는 모르겠으나, 찾아봐야겠네요. 이번기회에..., Number 타입의 값이 1000을 넘어서면 자동으로 콤마(,)가 찍힙니다. 1,000 이런식으로 말이죠. 이때 테이블이나 id값등을 숫자로 사용하는 경우 해당 값에 콤마가 찍힌채로 넘어가게 되어 NumberFormatException 등이 발생하거나 테이블 SELECT 시 값이 나오지 않는 경우가 발생합니다.

차라리 에러라도 나면 찾으련만 단순히 SELECT 값이 나오지 않는 경우 처음엔 원인을 찾느라 시간을 많이 허비했습니다.(요즘은 딱 보면... 감이 오긴 합니다.)

이때는 ${myObject.value?string("##0")} 혹은 ${myObject.value?string.number} 등으로 콤마를 표시하지 않을 수 있습니다.

확인 해봐야 겠지만 설정으로 한번에 고칠 수 있다면 편하겠죠. 하지만 장점도 있습니다. 쇼핑몰 같은 경우 빈번한 가격표시를 해야할때 Number 타입의 값을 콤마를 찍지 않고도 간편히 표시할 수 있다는 점이죠.


약 2-3달여 SM 업무를 하며 많이 발생한 오류가 저 두가지 인듯 합니다. 특히 10여명이 넘는 많은 인원들이 빠른시간내에 개발해야하는 IT 프로젝트 특성상 한두개 테스트 하는 경우엔 값이 나오니 빼놓는 경우가 많은 듯 합니다. 

댓글 없음:

댓글 쓰기