참조들 |
변수들 |
표기:
$ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ]
예제:
- 통상적인 표기: $mud-Slinger_9
- 무성 표기: $!mud-Slinger_9
- 정식 표기: ${mud-Slinger_9}
|
|
프로퍼티들 |
표기:
$ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[a..z, A..Z ][ a..z, A-Z, 0..9, -, _ ]* [ } ]
예제:
- 정규 표기: $customer.Address
- 정식 표기: ${purchase.Total}
|
|
메소드들 |
표기:
$ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]*( [ optional parameter list... ] ) [ } ]
예제:
- 정규 표기: $customer.getAddress()
- 정식 표기: ${purchase.getTotal()}
- 정규 표기 with Parameter List: $page.setTitle( "My Home Page" )
|
|
VTL 프로퍼티들은 get 과 set을 취하는 VTL 메소드들에 대한 간결화된 표기로서 사용될 수 있다. $object.getMethod() 또는 $object.setMethod()은 $object.Method로서 간결화 될 수 있다. 이용 가능할 때 프로퍼티를 사용하는 것이 일반적으로 선호된다. 프로퍼티와 메소드들 사이의 주된 차이점은 당신이 메소드에 파라미터 리스트를 지정할 수 있다는 점이다.
|
|
다이렉티브들 |
#set - 참조 값을 갖게 한다 |
형식:
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )
Usage:
- $ref - 할당의 좌변은 변수 참조 또는 프로퍼티 참조이어야 한다.
- arg - 할당의 우변은 만일 이중 인용 부호 속에 닫혀있을 경우에 arg가 파싱 되고, 만일 단일 인용부호 속에 닫혀 있을 경우에 파싱 되지 않는다.만일 우변이 null로 평가될 경우, 그것은 좌변에 할당되지 않는다.
예제들:
- 변수 참조: #set( $monkey = $bill )
- 문자열 리터럴: #set( $monkey.Friend = 'monica' )
- 프로퍼티 참조: #set( $monkey.Blame = $whitehouse.Leak )
- 메소드 참조: #set( $monkey.Plan = $spindoctor.weave($web) )
- 숫자 리터럴: #set( $monkey.Number = 123 )
- 범위 연산자: #set( $monkey.Numbers = [1..3] )
- 객체 배열: #set( $monkey.Say = ["Not", $my, "fault"] )
우변은 또한 다음과 같은 간단한 산술 표현식일 수 있다:
- 더하기: #set( $value = $foo + 1 )
- 빼기: #set( $value = $bar - 1 )
- 곱하기: #set( $value = $foo * $bar )
- 나누기: #set( $value = $foo / $bar )
- 나머지: #set( $value = $foo % $bar )
|
|
#if / #elseif / #else - 문장들의 진리값에 대한 조건을 출력한다 |
형식:
# [ { ] if [ } ] ( [condition] ) [output] [ # [ { ] elseif [ } ] ( [condition] ) [output] ]* [ # [ { ] else [ } ] [output] ] # [ { ] end [ } ]
사용법:
- 조건 - Iboolean일 경우, 그것이 true false를 갖는 경우인지를 검토한다; 만일 boolean이 아닐 경우, null이 아니면 true로 간주한다.
- 출력 - VTL을 포함할 수도 있다.
예제들:
- 등치 연산자: #if( $foo == $bar )
- 보가 크다: #if( $foo > 42 )
- 보다 작다: #if( $foo < 42 )
- 같거나 보다 크다: #if( $foo >= 42 )
- 같거나 보다 작다: #if( $foo <= 42 )
- 숫자가 같다: #if( $foo == 42 )
- 문자열이 같다: #if( $foo == "bar" )
- Boolean NOT: #if( !$foo )
- delimit 다이렉티브에 중괄호 사용하기: #if( $foo == $bar)it's true!#{else}it's not!#end
|
|
#parse - Velocity에 의해 파싱되는 로컬 템플릿을 렌더링 한다 |
형식:
# [ { ] parse [ } ] ( arg )
- arg - TEMPLATE_ROOT 하에 있는 템플릿을 참조한다.
예제들:
- 문자열: #parse( "lecorbusier.vm" )
- 변수: #parse( $foo )
재귀순환이 허용된다. 파싱 깊이를 변경하려면 velocity.properties 내에 있는 parse_directive.maxdepth를 보라. (디폴트 파싱 깊이는 10이다.) |
|
#macro - 필요할 때 Velocimacro (VM), VTL 템플릿의 반복되는 조각을 정의하는 것을 사용자에게 허용해준다 |
형식:
# [ { ] macro [ } ] ( vmname $arg1 [ $arg2 $arg3 ... $argn ] ) [ VM VTL code... ] # [ { ] #end [ } ]
- vmname - VM을 호출하는데 사용되는 이름(#vmname)
- $arg1 $arg2 [ ... ] - VM에 대한 아규먼트들. 많은 아규먼트들이 존재할 수 있지만, 호출에 사용되는 숫자들은 정의에서 지정된 숫자와 일치해야 한다.
- [ VM VTL code... ] - 당신이 템플릿 속에 집어 넣을 수 있는 어떤 것인, 어떤 유효한 VTL 코드는 VM 속에 집어넣어질 수 있다.
일단 정의되었으면, VM은 템플릿 내에서 어떤 다른 VTL 다이렉티브처럼 사용된다.
VM들은 다음 두 장소들 중 하나 속에 정의될 수 있다:
- Template library 라이브러리: 는 Velocity에 미리 패키징되어 있는 VM들 또는 안성맞춤으로 만들어진, 사용자 정의된, 사이트-지정적인 VM들일 수 있다; 임의의 템플릿으로부터 이용 가능함
- Inline: 정규 템플릿들 속에서 발견되며,
velocity.properties 내에서 velocimacro.permissions.allowInline=true일 때에만 사용 가능함. |
|
|
|
주석들 |
주석들은 실행 시에 렌더링 되지 않는다.
단일 행 |
예제:
## 이것은 한 행 주석이다. |
|
다중 행 |
예제:
#* 이것은 다중 행 주석이다. 이것은 두 번째 행이다 *# | |
|