Define and use Macro
import java.io.StringWriter; import java.io.Writer; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.tools.generic.RenderTool; public class VMDemo { public static void main(String[] args) throws Exception { Velocity.init(); Template t = Velocity.getTemplate("./src/VMDemo.vm"); VelocityContext ctx = new VelocityContext(); Writer writer = new StringWriter(); t.merge(ctx, writer); System.out.println(writer); } } ------------------------------------------------------------------------------------- #macro (writeTable $productList) #set ($rowCount = 1) #foreach($product in $productList) #if ($rowCount % 2 == 0) #set ($bgcolor = "#FFFFFF") #else #set ($bgcolor = "#CCCCCC") #end <tr> <td bgcolor="$bgcolor">$product</td> <td bgcolor="$bgcolor">$product</td> </tr> #set ($rowCount = $rowCount + 1) #end #end #set ($products = ["one", "two", "three"]) <html> <head> <title>Title</title> </head> <body> <table> #writeTable($products) </table> </body> </html>
1. | Use macro to wrap HTML tags | ![]() | |
2. | Velocity Macro With Parameters | ![]() |