Velocity 에서 이스케이프 문자 사용하기

프로그래밍/기타 2013. 9. 5. 16:39

Velocity 에서 이스케이프 문자 사용하기

 

기존에 iBatis를 잘 사용하다가 오늘에서야 MyBatis 로 넘어오게되었다. 

MyBatis 에서는 Dynamic SQL 문법이 바뀌었는데 기존 보다 더 편해지고 간결해졌다.

변수사용되 기존에는 #id# 로 사용되던 것이 #{id} 로 바뀌었다.

문법도 JSTL 처럼 <foreach> 라던지 <if> <where> .. 등등이 추가되어 기존보다 SQL 문을 보기가 수월하다.

 

그래서 기존의 mapper 관련 템플릿 xml 파일을 수정하게 되었다.

DB 모델 관련 mapper 파일을 기존에 velocity 를 사용해서 자동생성 되도록 만들어놨기 때문에 템플릿 파일만 수정하면 되었다.

 

다른건 다 수정이 완료되었는데 유난히 #{id} 가 자꾸 #id 로 출력되었다.

이유는 잘 모르겠지만 velocity 에서 id를 변수로 취급하는것 같았다. 그래서 #{id} 가 #id 로 바뀌어 출력이 되는건 아닐까?

 

해결책은 velocity 상에서 escape 문자를 선언하면 된다.

관련 문서를 찾아봐도 깔금한 해결책은 없는 것 같고

# 문자를 변수에 담아 사용하라고 한다.

 

#set ($esc = "#")

${esc}{id}

 

이렇게 하라고 한다.

 

코드가 조금 지저분해 보이지만 뭐 어쩔 수 없을 듯 하다.

 

 

: