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 RuntimeMacromacroprivate java.lang.Stringname-
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.StringgetName()Return the name of this directive.java.lang.StringgetScopeName()Override to use the macro name, since it is within an #@myMacro() ...voidinit(RuntimeServices rs, InternalContextAdapter context, Node node)Initializes the directive.booleanrender(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:DirectiveReturn 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:
getScopeNamein classDirective
-
init
public void init(RuntimeServices rs, InternalContextAdapter context, Node node) throws TemplateInitException
Initializes the directive.- Overrides:
initin 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.
-
-