4.4 Methods

A method is part of a context object, written in Java code, and is capable of doing something useful, like running a calculation or arriving at a decision. Method invocation is indicated by round parentheses following the method name. These parentheses can optionally contain a parameter list.

Example 4.3. Valid method references

$cart.addTaxes(8, 16)

# Property access
$page.setTitle( "My Home Page" )

The last few examples are similar to the examples seen earlier when discussing properties. As stated there, the properties notation is a short-hand notation for the invocation of bean getters and setters.[6]

The main difference between Properties and Methods is that you can specify a parameter list to a Method.

Example 4.4. Methods that can be used with shorthand notation


$album.put("logo", "newlogo")

## equal property getters and setters


#set ($shop.customer = $customer)
#set ($sun.planetCount = 9)
#set ($album.logo = "New Logo")


The last #set() example will not work in Velocity versions before 1.5 unless the $album object implements java.util.Map. This is a bug in older Velocity versions.

Not every method invocation can be replaced by short hand notation. Even if a method is called set<property>() or get<property>(), it must still adhere to bean getter and setter method signatures.

Example 4.5. Methods that can not be used with shorthand notation

## Can't pass a parameter with $sun.planet

## Velocity only allows shorthand notation for getter and setter

## Can't pass a parameter list
$book.setAuthorAndTitle("George Orwell", "Homage to Catalonia")

[6] By explicitly stating the method name and parameters, the Uberspector is not used. This is useful if you object has both, get(String) and explicit property getter methods.