Class BlockMacro
- java.lang.Object
-
- org.apache.velocity.runtime.directive.Directive
-
- org.apache.velocity.runtime.directive.Block
-
- org.apache.velocity.runtime.directive.BlockMacro
-
- All Implemented Interfaces:
java.lang.Cloneable
,DirectiveConstants
public class BlockMacro extends Block
BlockMacro directive is used to invoke Velocity macros with normal parameters and a macro body.The macro can then refer to the passed body AST. This directive can be used as a "decorator". Body AST can contain any valid Velocity syntax. An example:
#set($foobar = "yeah!") #macro(strong $txt) <strong>$bodyContent</strong> $txt #end #@strong($foobar) <u>This text is underlined and bold</u> #end
Will print:<strong><u>This text is underlined and bold<u></strong> yeah!
bodyContent reference name is configurable (see velocity.properties).- Since:
- 1.7
- Version:
- $Id$
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.velocity.runtime.directive.Block
Block.Reference
-
-
Field Summary
Fields Modifier and Type Field Description private RuntimeMacro
macro
private java.lang.String
name
-
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
-
-
Constructor Summary
Constructors Constructor Description BlockMacro(java.lang.String name)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getName()
Return the name of this directive.java.lang.String
getScopeName()
Override to use the macro name, since it is within an #@myMacro() ...void
init(RuntimeServices rs, InternalContextAdapter context, Node node)
Initializes the directive.boolean
render(InternalContextAdapter context, java.io.Writer writer, Node node)
Renders content using the selected macro and the passed AST body.-
Methods inherited from class org.apache.velocity.runtime.directive.Directive
getColumn, getLine, getTemplateName, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
-
-
-
-
Field Detail
-
name
private java.lang.String name
-
macro
private RuntimeMacro macro
-
-
Method Detail
-
getName
public java.lang.String getName()
Description copied from class:Directive
Return the name of this directive.
-
getScopeName
public java.lang.String getScopeName()
Override to use the macro name, since it is within an #@myMacro() ... #end block that the scope in question would be used.- Overrides:
getScopeName
in classDirective
-
init
public void init(RuntimeServices rs, InternalContextAdapter context, Node node) throws TemplateInitException
Initializes the directive.- Overrides:
init
in classBlock
- Parameters:
rs
-context
-node
-- Throws:
TemplateInitException
-
render
public boolean render(InternalContextAdapter context, java.io.Writer writer, Node node) throws java.io.IOException
Renders content using the selected macro and the passed AST body.
-
-