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:
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$
- Author:
- Jarkko Viinamaki
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.velocity.runtime.directive.Block
Block.Reference
-
-
Constructor Summary
Constructors Constructor Description BlockMacro()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetName()Return the name of this directive.StringgetScopeName()Override to use the macro name, since it is within an #@myMacro() ...voidinit(RuntimeServices rs, String macroName, InternalContextAdapter context, Node node)Initializes the directive.booleanrender(InternalContextAdapter context, 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
checkArgs, getColumn, getLine, getTemplate, getTemplateName, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
-
-
-
-
Method Detail
-
getName
public String getName()
Description copied from class:DirectiveReturn the name of this directive.
-
getScopeName
public 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:
getScopeNamein classDirective- Returns:
- the name to be used when a scope control is provided for this directive.
-
init
public void init(RuntimeServices rs, String macroName, InternalContextAdapter context, Node node) throws TemplateInitException
Initializes the directive.- Parameters:
rs-macroName-context-node-- Throws:
TemplateInitException
-
render
public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException
Renders content using the selected macro and the passed AST body.- Specified by:
renderin classDirective- Parameters:
context-writer-node-- Returns:
- True if the directive rendered successfully.
- Throws:
IOException
-
-