Java/Velocity/Macro

Материал из Java эксперт
Перейти к: навигация, поиск

Define and use Macro

   <source lang="java">
      

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);
 }

}


  1. 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
  1. end
  2. set ($products = ["one", "two", "three"])

<html>

 <head>
   <title>Title</title>
 </head>
 <body>
#writeTable($products)
 </body>

</html>

      </source>
   
  
 
  



Use macro to wrap HTML tags

   <source lang="java">

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.IteratorTool; public class VMDemo {

 public static void main(String[] args) throws Exception {
   Velocity.init();
   Template t = Velocity.getTemplate("./src/demo.vm");
   VelocityContext ctx = new VelocityContext();
   ctx.put("var", new IteratorTool());
   Writer writer = new StringWriter();
   t.merge(ctx, writer);
   System.out.println(writer);
 }

}


  1. macro( d )

<tr><td></td></tr>

  1. end
  2. d()
      </source>
   
  
 
  



Velocity Macro With Parameters

   <source lang="java">

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.IteratorTool; public class VMDemo {

 public static void main(String[] args) throws Exception {
   Velocity.init();
   Template t = Velocity.getTemplate("./src/demo.vm");
   VelocityContext ctx = new VelocityContext();
   ctx.put("var", new IteratorTool());
   Writer writer = new StringWriter();
   t.merge(ctx, writer);
   System.out.println(writer);
 }

}


  1. macro( tablerows $color $somelist )
 #foreach( $something in $somelist )
     <tr><td bgcolor=$color>$something</td></tr>
 #end
  1. end
  1. set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )
  2. set( $color = "blue" )
#tablerows( $color $greatlakes )
      </source>