Velocity language
The Velocity engine used in Telosys is version 1.7
For more information about the Velocity Templates Language (VTL) see the official web site :
References (variables and objects)
A template is a text file mixing fixed parts and dynamic parts based on references to variables and objects. A reference to a variable or an object starts with "$".
⇒ Shorthand Reference Notation
Example :
$foo : content of variable "foo"
$customer.address : get property "address" in object "customer"
$person.isVIP() : call method "isVIP()" in object "person"
⇒ Formal Reference Notation
This notation uses "{" and "}" to clearly delimit the beginning and end of the reference name. It can be used to avoid ambiguities.
Examples :
${foo}
${customer.address}
${person.isVIP()}
⇒ Silent Reference Notation
Telosys uses the VTL parser in "strict" mode, which means that the VTL "silent notation" using a "!
" character at the beginning of the reference name (e.g. $!abc
or $!{abc}
) has no effect.
All references must be defined (initialized) before using them.
If the reference is not defined an error will occur (even with "!")
Examples:
Current entity is ${entity.name}
#foreach( $attrib in $entity.attributes )
Do something with $attrib.name and $attrib.type
#end
Comments
A part of line starting with "##" is a single line comment. All lines between "#*" and "*#" are a comment block.
## This is a single line comment.
#set($x = 12)## init variable x
#*
This is a multi-lines comment
with 1 to N lines
*#
Unparsed content
All lines between "#[[" and "]]#" are not parsed by Velocity, they are rendered as is. So characters like "#" or "$" can be used anywhere.
The #[[ do not parse me ]]# syntax allows to easily use large chunks of uninterpreted and unparsed content in a template.
#[[
This part is not parsed, it is rendered as text (without Velocity interpretation)
Blablabla #include blabla
#set #break #if $a
]]#
Literals
String literals
When using the #set directive, strings that are enclosed in double quote characters will be parsed. But if the string literal is enclosed in single quote characters, it will not be parsed. A string literal can contains multiple lines.
#set($s = "abc $i")## 'i' is replaced by its value
#set($s = 'abc $i')## no variable substitution
#set($s =
'line 1 $a
line 2 $b
line 3 $c')## 3 lines in the string
Escaping quotes in literal strings Just double the same type of quotes (single/double quote) used to wrap the string.
#set($txt = "It's a ""literal"" string" )
#set($txt = 'It''s a "literal" string' )
Numbers literals
Same as in all languages: 0 to 9 plus ' . '
Examples:
#set($x = 12)## Integer
#set($y = 12.34)## Double
Boolean literals
Just true and false
Examples:
#set( $b = true )
#set( $b = false )
Operators
Comparison operators
Examples (showing different operators):
Operator
Symbol
Text
Example
Equals / number
==
eq
#if( $foo == 42 )
Equals / string
==
eq
#if( $foo == "bar" )
Equals / object
==
eq
#if( $foo == $bar )
Not Equals
!=
ne
#if( $foo != $bar )
Greater Than
>
gt
#if( $foo > 42 )
Less Than
<
lt
#if( $foo < 42 )
Greater Than or Equal To
>=
ge
#if( $foo >= 42 )
Less Than or Equal To
<=
le
#if( $foo <= 42 )
Note: The == operator can be used to compare numbers, strings, objects of the same class, or objects of different classes. In the last case (when objects are of different classes), the toString() method is called on each object and the resulting Strings are compared.
Logical operators
Operator
Symbol
Text
Logical AND
&&
and
Logical OR
||
or
Logical NOT
!
not
Examples :
#if ( $v > 100 && $v < 200 )
Between 100 and 200
#end
#if ( $v == 100 || $v == 102 || $v == 123 )
Var is 100 or 102 or 123
#end
#if ( ! ( $v == 100 || $v == 101 ) )
Var is not 100 or 101
#end
Arithmetic operators
Operator
Symbol
Example
Addition
+
#set( $r = $a + $b )
Subtraction
-
#set( $r = $a - $b )
Multiplication
*
#set( $r = $a * $b )
Division
/
#set( $r = $a / $b )
Modulo
%
#set( $r = $a % 10 )
Increment
(no operator)
#set( $a = $a + 1 )
Decrement
(no operator)
#set( $a = $a - 1 )
Note: when the "+" operator is used with 2 strings, it concatenates these 2 strings.
Range operator
The range operator creates an array of integer objects. It can be used in conjunction with #set and #foreach statements.
Syntax : [ first .. last ]
Examples :
## Range from 1 to 5
#foreach( $i in [1..5] )
$i
#end
## Range from 10 to 12 (size : 3 )
#set( $r = [ 10 .. 12 ] )
range size : $r.size()
#foreach( $i in $r )
$i
#end
## Range from var to var
#set( $a = 4 )
#set( $b = 8 )
#foreach( $i in [$a..$b] )
$i
#end
## Range in reverse order
#foreach( $i in [ 4 .. -2 ] )
$i
#end
Last updated