About
Community
Docs
Comparisons
Tools
|
References
|
Variables
|
Notation:
$ [ ! ][ { ][
a..z, A..Z ][ a..z,
A..Z, 0..9, -,
_ ][ } ]
Examples:
- Normal notation: $mud-Slinger_9
- Silent notation: $!mud-Slinger_9
- Formal notation: ${mud-Slinger_9}
|
|
Properties
|
Notation:
$ [ { ][ a..z,
A..Z ][ a..z, A..Z,
0..9, -, _ ]*
.[a..z, A..Z ][
a..z, A-Z, 0..9,
-, _ ]* [ } ]
Examples:
- Regular Notation: $customer.Address
- Formal Notation: ${purchase.Total}
|
|
Methods
|
Notation:
$ [ { ][ a..z,
A..Z ][ a..z, A..Z,
0..9, -, _ ]*
.[ a..z, A..Z ][
a..z, A..Z, 0..9,
-, _ ]*( [
opional parameter list... ] ) [
} ]
Examples:
- Regular Notation: $customer.getAddress()
- Formal Notation: ${purchase.getTotal()}
- Regular Notation with Parameter List: $page.setTitle( "My Home
Page" )
|
|
VTL Properties can be used as a shorthand notation for VTL Methods
that take get and set. Either
$object.getMethod() or $object.setMethod() can be
abbreviated as $object.Method. It is generally preferable to
use a Property when available. The main difference between Properties
and Methods is that you can specify a parameter list to a Method.
|
|
Directives
|
#set - Establishes the value of a reference
|
Format:
#set( $ref = [ ",
' ]arg[ ", ' ] )
Usage:
- $ref - The LHS of the assignment must be a variable
reference or a property reference.
- arg - The RHS of the assignment, arg is parsed
if enclosed in double quotes, and not parsed if enclosed in single
quotes.
Examples:
- Variable reference: #set( $monkey = "bill" )
- String literal: #set( $monkey.Friend = "monica" )
- Property reference: #set( $monkey.Blame = $whitehouse.Leak
)
- Method reference: #set( $monkey.Plan = $spindoctor.weave($web)
)
- Number literal: #set( $monkey.Number = 123 )
- Object array: #set( $monkey.Say = ["Not", $my, "fault"] )
The RHS can also be a simple arithmetic expression, such as:
- Addition: #set( $value = $foo + 1 )
- Subtraction: #set( $value = $bar - 1 )
- Multiplication: #set( $value = $foo * $bar )
- Division: #set( $value = $foo / $bar )
- Remainder: #set( $value = $foo % $bar )
|
|
#if / #elseif / #else - output conditional on truth of statements
|
Format:
#if( [condition] ) [output] [
#elseif( [condition] ) [output] ]* [
#else [output] ]
#end
Usage:
- condition - If a boolean, considered true if it has a
true false; if not a boolean, considered true if not null.
- output - May contain VTL.
Examples:
- Equivalent Operator: #if( $foo == $bar )
- Greater Than: #if( $foo > 42 )
- Less Than: #if( $foo < 42 )
- Greater Than or Equal To: #if( $foo >= 42 )
- Less Than or Equal To: #if( $foo <= 42 )
- Equals Number: #if( $foo = 42 )
- Equals String: #if( $foo = "bar" )
|
|
#parse - Renders a local template that is parsed by Velocity
|
Format:
#parse( arg )
- arg - Refers to a template under TEMPLATE_ROOT.
Examples:
- String: #parse( "lecorbusier.vm" )
- Variable: #parse( $foo )
Recursion permitted. See parse_directive.maxdepth in
velocity.properties
to change from parse depth. (The default parse depth is 10.)
|
|
#macro - Allows users to define a Velocimacro (VM), a repeated segment of a VTL template, as required
|
Format:
#macro( vmname $arg1[, $arg2, $arg3, ... $argn ]
) [ VM VTL code... ] #end
- vmname - Name used to call the VM
(#vmname)
- $arg1 $arg2 [ ... ] - Arguments to the VM. There can be
any number of argumentss, but the number used at invocation must
match the number specified in the definition.
- [ VM VTL code... ] - Any valid VTL code, anything you
can put into a template, can be put into a VM.
Once defined, the VM is used like any other VTL directive in a
template.
VMs can be defined in one of two places:
- Template library: can be either VMs pre-packaged with
Velocity or custom-made, user-defined, site-specific VMs;
available from any template
- Inline: found in regular templates, only usable when
velocimacro.permissions.allowInline=true in
velocity.properties .
|
|
|
|
Comments
|
Comments are not rendered at runtime.
Multi Line
|
Example:
#*
This is a multiline comment.
This is the second line
*#
|
|
|
|
|