Class Foreach
java.lang.Object
org.apache.velocity.runtime.directive.Directive
org.apache.velocity.runtime.directive.Foreach
- All Implemented Interfaces:
Cloneable
,DirectiveConstants
Foreach directive used for moving through arrays,
or objects that provide an Iterator.
- Version:
- $Id: Foreach.java 945927 2010-05-18 22:21:41Z nbubna $
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
A special context to use when the foreach iterator returns a null. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
What value to start the loop counter at.private String
The name of the variable to use when placing the counter value into the context.private String
The reference name used to access each of the elements in the list object.private String
The name of the variable to use when placing iterator hasNext() value into the context.Right now the defailt is $velocityHasNextprivate int
The maximum number of times we're allowed to loop.private boolean
Whether or not to throw an Exception if the iterator is null.protected Info
immutable, so create in initprivate boolean
Fields inherited from interface org.apache.velocity.runtime.directive.DirectiveConstants
BLOCK, LINE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
clean
(InternalContextAdapter context, Object o, Object savedCounter, Object nextFlag) getName()
Return name of this directive.int
getType()
Return type of this directive.void
init
(RuntimeServices rs, InternalContextAdapter context, Node node) simple init - init the tree and get the elementKey from the ASTprotected void
put
(InternalContextAdapter context, String key, Object value) Extension hook to allow subclasses to control whether loop vars are set locally or not.boolean
render
(InternalContextAdapter context, Writer writer, Node node) renders the #foreach() blockMethods inherited from class org.apache.velocity.runtime.directive.Directive
getColumn, getLine, getScopeName, getTemplateName, isScopeProvided, makeScope, postRender, preRender, setLocation, setLocation
-
Field Details
-
counterName
The name of the variable to use when placing the counter value into the context. Right now the default is $velocityCount. -
hasNextName
The name of the variable to use when placing iterator hasNext() value into the context.Right now the defailt is $velocityHasNext -
counterInitialValue
private int counterInitialValueWhat value to start the loop counter at. -
maxNbrLoops
private int maxNbrLoopsThe maximum number of times we're allowed to loop. -
skipInvalidIterator
private boolean skipInvalidIteratorWhether or not to throw an Exception if the iterator is null. -
elementKey
The reference name used to access each of the elements in the list object. It is the $item in the following: #foreach ($item in $list) This can be used class wide because it is immutable. -
warned
private boolean warned -
uberInfo
immutable, so create in init
-
-
Constructor Details
-
Foreach
public Foreach()
-
-
Method Details
-
getName
Return name of this directive. -
getType
public int getType()Return type of this directive. -
init
public void init(RuntimeServices rs, InternalContextAdapter context, Node node) throws TemplateInitException simple init - init the tree and get the elementKey from the AST- Overrides:
init
in classDirective
- Parameters:
rs
-context
-node
-- Throws:
TemplateInitException
-
put
Extension hook to allow subclasses to control whether loop vars are set locally or not. So, those in favor of VELOCITY-285, can make that happen easily by overriding this and having it use context.localPut(k,v). See VELOCITY-630 for more on this. -
render
public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException, MethodInvocationException, ResourceNotFoundException, ParseErrorException renders the #foreach() block- Specified by:
render
in classDirective
- Parameters:
context
-writer
-node
-- Returns:
- True if the directive rendered successfully.
- Throws:
IOException
MethodInvocationException
ResourceNotFoundException
ParseErrorException
-
clean
protected void clean(InternalContextAdapter context, Object o, Object savedCounter, Object nextFlag)
-