Velocity Macro with Parameters

This
Example shows you how
to use macro with parameters in velocity
template.
Example given below show you, how
to display date and time velocity. The method used in this example are
described below:-
1:- Initialize velocity run
time
engine through method init().
2:- Create object of
VelocityContext Class.
3:- Create Template
class object, Template
class object is used for
controlling template methods and properties.
template.merge(context, writer): Merge method of the Template class
is used here for
merging the VelocityContext class object to produce
the output. Template class object is used for
controlling template methods and properties.
#add($list): This method is used to call the add function
created above.
MacroWithParameter.java
import java.io.*;
import org.apache.velocity.*;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.tools.generic.RenderTool;
public class UseMacro {
public static void main(String[] args) throws Exception {
Velocity.init();
Template template = Velocity.getTemplate("./src/MacroWithParameter.vm");
VelocityContext context = new VelocityContext();
Writer writer = new StringWriter();
template.merge(context, writer);
System.out.println(writer);
}
}
|
MacroWithParameter.vm
#macro(add $list)
#set($total=0)
#foreach($item in $list)
$item
#set($total =$total+$item)
#end
--------------
total = $total
#end
#set ($list = [1, 2, 2])
#add($list)
|
Output:
1
2
2
--------------
total =
5
|
Download code

|