forEach JavaServer Page tag
Use the
forEach
tag to repeat an action for each property in a page, for each page in a
Page List, or for each property in any list or group.
In runtime stream processing that includes a section or control that includes complex parameters on the
Parameters
tab, you can use the
forEach
tag to iterate over arrays or groups of parameter values.
Basics
Properties with a mode other than
Single Value
are known as aggregates. The forEach tag iterates through the parts of an aggregate property.
For example, assume a clipboard page named Operators contains embedded
pxResults()
pages. The
pxResults()
pages each hold a property
pyUserIdentifier
identifying one customer. Use the forEach tag to create an HTML table that contains a row for each customer:
<TABLE>
<pega:forEach name="Operators.pxResults">
<TR><TD>
<pega:reference name="$THIS.pyUserIdentifier" />
</TR></TD>
</pega:forEach >
</TABLE>
Within the scope of the forEach tag, special keywords are available:
- The keyword $this identifies the current (embedded) page.
- The syntax $this.propertyname represents a property on the current (embedded) page.
-
The keyword
$this-value represents the (scalar) current active property on the current embedded page.
Complete syntax
In the syntax presentations below:
-
Square bracket characters
[and]define optional parts of the tag. Do not type the brackets. -
JSP delimiters
<pega..>and</pega...>mark the start and end of the tag. - Replace any text in italics with your choice of value of that type.
To do something for each property in a
Value List,
Value Group,
Page,
Page List, or
Page Group, use this syntax. In place of the word aggregate-reference, enter the name of the aggregate property.
<pega:forEach name="aggregate-reference" >
actionToRepeat or
</pega:forEach >
| Attribute | Description |
|---|---|
name
|
The name of the aggregate property,
$this, or
$this.propertyname. To refer to a complex parameter, use the keyword "param" followed by the complex parameter name.
|
To do some processing for each property in a top-level page, use this syntax:
<pega:forEach name="page-name" >
actionToRepeat
</pega:forEach >
If the array contains only
Single Value
properties, use the keyword
$this
:
<pega:forEach name="$this">
actionToRepeat
</pega:forEach >
No conditional "break" or "leave" from the scope of a forEach tag is available: all iterations always occur. To perform only some, rather than all, iterations of a forEach tag, include a <pega:when > element:
<pega:forEach name="page-name" >
<pega:when ...>
actionToRepeat if true
</pega:when>
</pega:forEach >
Nesting a forEach tag within the scope of another forEach tag is supported.
To iterate over complex parameters that are similar in structure to
Value List,
Value Group,
Page List, and
Page Group
properties defined on the
Parameters
tab of a section or control rule:
<pega:forEach name="Param.MyPageList" >
<pega:reference name="$this.Innervalue"/>
</pega:forEach>
Examples
These examples use the forEach tag to display values from clipboard pages.
Arrays within arrays
If the array contains lists of pages, then you can embed a forEach tag and iterate over that list as well:
<pega:forEach name=”.pxResults”>
<pega:forEach name=”$this.addresses”>
<pega:reference name=”$this.streetName”/>
</pega:forEach>
</pega:forEach>
Obtain values for each assignment in a flow
To obtain values from an embedded group of pages:
<pega:forEach name=".pxFlow" >
value="<pega:reference ref="$this.pxAssignmentKey" /> "
</pega:forEach >
This example uses the
Work-.pxFlow
property, a
Page Group. It identifies, in sequence, the value of the
pxAssignmentKey
property for each page in the
Page Group.
Using the forEach tag in control rules
To create a selection box, use syntax similar to the following:
<select name="<p:r n="$this-name" /> ">
<pega:forEach name=".pyKeyDefList" >
<option value="<pega:reference ref="$this.pyKeyName" />">
<pega:reference ref="$this.pyKeyCaption" >
</pega:forEach >
</select>
To create option (radio) buttons, use syntax similar to the following:
<pega:withTarget name="$this" >
<pega:forEach name=" .pyKeyDefList" >
<input type="radio" value="<pega:reference
ref="$this.pyKeyName" / >">
<pega:reference ref="$this.pyKeyCaption" / >
</pega:forEach>
</pega:withTarget>
An example of iteration over complex parameter values rather than property values:
<pega:forEach name="Param.MyPageList">
<pega:withEmbedded name="$this" >
<pega:reference name=".MyInnerValue" />
</pega:withEmbedded>
</pega:forEach>