Define and use Macro : Macro « Velocity « Java






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>

           
       








velocity-Macro.zip( 875 k)

Related examples in the same category

1.Use macro to wrap HTML tags
2.Velocity Macro With Parameters