dsp:tomap can save any dynamic value—JavaBean, Dynamic Bean or page parameter—as an EL variable. dsp:tomap
has the following syntax:
<dsp:tomap var=var-name
bean="nucleus-path
/component-name
.property
[.property
]...[
scope="scope-spec
"]
/>
For example:
<dsp:tomap bean="/atg/userprofiling/Profile" var="userProfile"/>
This tag creates the variable userProfile
which can be used to reference all Profile
component properties. The tag omits the scope
attribute, so the default pageScope
is applied. You can render this value later on the page as follows:
Welcome back, <c:out value="${userProfile.firstName}"/>!
Mapping to properties
In the previous example, the firstName
property is referenced through the userProfile
variable. dsp:tomap
also lets you set an EL variable to a component property, enabling direct access to the property itself:
<dsp:tomap bean="/atg/userprofiling/Profile.firstName" var="name"/> Welcome back, <c:out value="${name}"/>!
Accessing Dynamic Beans as properties
If a dsp:tomap
tag sets its recursive
attribute to true
, all underlying Dynamic Beans are wrapped as Maps and can be accessed through the EL variable. This can help simplify code that accesses multi-dimensional data. For example, if the RepositoryItem Profile
has a property fundList
which is itself a RepositoryItem, you can provide direct access to the fundList
property as follows:
<dsp:tomap bean="atg/userprofiling/Profile" var="profile" recursive="true"/> I own these mutual funds: <c:out value="${profile.fundList}"/>
If desired, you can access the underlying Dynamic Bean rather than its Map wrapper through the DynamicBeanMap property _realObject
. Thus, given the previous example, you might access the Dynamic Bean fundList
as follows:
${profile.fundList._realObject}