1. 주석 사용
## 로 시작하면 한 줄 코멘트
#* 로 시작하고 *#로 끝나면, 여러 줄 코멘트
#** 로 시작하고 *#로 끝나면, 블록 코멘트.
2. 레퍼런스
$(variable) : 컨텍스트에서 제공되는 변수에 대한 레퍼런스
$(variable.property) : 속성에 대한 레퍼런스
$(cariable.method(arg)) : 메소드에 대한 레퍼런스
예)
$date.format("yyyy-MM-dd", $createTime)
3. 디렉티브
#set : 레퍼런스의 값 설정
#if/#elseif/#else : 조건문 제어
#foreach : 객체 리스트에 댛란 반복 제어
#include : 벨로시티로 파싱되지 않은 로컬 파일 출력
#parse : 벨로시티로 파싱된 로컬 템플릿 출력
#stop : 템플릿 엔진의 동작 정지
#macro : 반복적으로 사용될 VM(velocimacro)
예)
*. set
#set ($val = 1234567)
*. if/elseif/else
#if( $foo == $bar ) -> 등치 연산자
#if( $foo == 42 )
#if( $foo == "bar" )
#if( !$foo ) -> Boolean NOT
*. foreach
$allPages가 List나 Array인 경우
#foreach( $page in $allPages)
$page
#end
$allPages가 Map이나 Hashtable일 경우
#foreach( $key in $allPages.keySet())
$key -> $allPages.get($key)
#end
*. include
Velocity에 의해 파싱되지 않는 로컬 파일(들)을 렌더링
#include ("a.html")
*. parse
Velocity에 의해 파싱되는 로컬 템플릿을 렌더링
#parse ("me.vm")
*. macro
편리한 함수를 만들어서 사용 가능함
#**
* General purpose date formatter. Need to be careful of whitespace.
* @param dateFormat Date format to be used (see java.text.SimpleDateFormat).
* @param date Date object to be formatted (see java.util.Date).
*#
#macro(formatDate $dateFormat $date )
$utils.formatDate($date, $dateFormat)
#end
4. toolbox.xml(Velocity Tool)을 활용한 사용자 정의 오브젝트의 사용
toolbox.xml에 사용자 정의 클래스를 적용하여 vtl에서 사용할 수 있다. getXX(), setXX(), isXX() 형태로 정의되었을 경우 가능
예)
*. Date Tool
org.apache.velocity.tools.generic.DateTool class를 추가함
$date.format("yyyy-MM-dd HH:mm:ss", $myDate) -> 2008-06-03 19:11:09
*. Number Tool
org.apache.velocity.tools.generic.NumberTool class를 추가함
$number.format("currency", $val) -> ₩1,234,567
$number.format("integer", $val) -> 1,234,567
*. Escape Tool
org.apache.velocity.tools.generic.EscapeTool를 추가함
$javascript -> I'm Mimul
$esc.javascript($javascript) -> I\'m Mimul