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 arraysIf 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
.
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>