2012年6月12日星期二

ADF_134:Tree组件使用指南之四:点击不同的树节点显示不同的表单

运行环境:JDeveloper 11.1.2.2.0 + Oracle Database 10g Express Edition 10.2.0.1。

点击不同的树节点,显示不同的表单,这也是一个很常见的场景。
比如点击Department节点,显示Department表单:

点击Employee节点,显示Employee表单:


这里我们只要综合一下实验《点击树节点刷新表单》和《定制SelectionListener》就可以实现了。

重点步骤说明:

1. 实现点击Employee节点,刷新Employee表单

2. 定制TreeSelectionListener
这里只在最后增加两行代码,其余和上一个实验一样:
Map viewScope = AdfFacesContext.getCurrentInstance().getViewScope();
viewScope.put("selectedTreeNode", nodeStuctureDefname);
这两行的作用是点击树节点时,把节点的结构定义名称保存到viewScope.selectedTreeNode变量中。

3. 修改页面,使用af:switch组件切换不同的表单
(1)af:switch根据facetName的值决定显示哪个facet,这里facetName="#{viewScope.selectedTreeNode}"。
(2)由于af:switch组件不支持PPR,因此在其外面“罩”了一个panelGroupLayout,并设置其PPR指向Tree组件id。

<f:facet name="second">
<af:panelGroupLayout layout="scroll" id="pgl1" partialTriggers="t1" >
<af:switcher id="s1" defaultFacet="model.DepartmentsView"
facetName="#{viewScope.selectedTreeNode}">
<f:facet name="model.DepartmentsView">
这里是Department Form
</f:facet>
<f:facet name="model.EmployeesView">
这里是Employee Form
</f:facet>
</af:switcher>
</af:panelGroupLayout>
</f:facet>

Project 下载:ADF_Tree_SelectionListener(2).7z

参考文献:
1. http://www.oracle.com/technetwork/developer-tools/adf/learnmore/50-synchromize-form-treeselection-169192.pdf

没有评论: