ADF in 11g includes a new, very powerful declarative debugger which has been blogged about elsewhere and documented in the application developer's guide. This is a great developer productivity improvement tool. The guide contains section documenting setting declarative breakpoints and a dedicated subsection explaining evaluation of EL expressions in the declarative debugger.
What I intend to do with this post over and above this good information, is provide supplementary illustrations specifically for evaluating EL expressions. For example, consider a rich tree component such as follows. Depending on the tree node being selected, screenshots are presented evaluating various EL expressions based on the node variable. As the screenshots illustrate, this capability to evaluate EL expressions is very cool, a great developer productivity boost indeed.
<af:tree value="#{bindings.DivisionsVO1.treeModel}" var="node"
rowSelection="single" displayRow="selected" id="t1">
<f:facet name="nodeStamp">
<af:switcher facetName="#{node.hierType.viewDefName}"
defaultFacet="dummy" id="s1">
<f:facet name="dummy">
<af:outputText value="Dummy Text" id="ot1"/>
</f:facet>
<f:facet name="model.view.DivisionsVO">
<af:commandLink actionListener="#{bindings.DivisionsExecuteWithParams.execute}"
text="#{node.Description}" disabled="false"
id="cl1">
<af:setPropertyListener from="#{node.hierType.viewDefName}"
to="#{sessionScope.viewDefName}"
type="action"/>
</af:commandLink>
</f:facet>
<f:facet name="model.view.ProductGroupsVO">
<af:commandLink actionListener="#{bindings.ProductGroupsExecuteWithParams.execute}"
text="#{node.Description}" disabled="false"
id="cl2">
<af:setPropertyListener from="#{node.hierType.viewDefName}"
to="#{sessionScope.viewDefName}"
type="action"/>
</af:commandLink>
</f:facet>
<f:facet name="model.view.TopLevelSpecsVO">
<af:commandLink actionListener="#{bindings.SpecsExecuteWithParams.execute}"
text="#{node.Description}" disabled="false"
id="cl6">
<af:setPropertyListener from="#{node.Type}"
to="#{sessionScope.viewDefName}"
type="action"/>
</af:commandLink>
</f:facet>
<f:facet name="model.view.SpecsVO">
<af:commandLink actionListener="#{bindings.SpecsExecuteWithParams.execute}"
text="#{node.Description}" disabled="false"
id="cl7">
<af:setPropertyListener from="#{node.Type}"
to="#{sessionScope.viewDefName}"
type="action"/>
</af:commandLink>
</f:facet>
</af:switcher>
</f:facet>
</af:tree>





1 comment:
Good Post.
Thanks,
Husain
Post a Comment