运行环境: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。
点击不同的树节点,显示不同的表单,这也是一个很常见的场景。
比如点击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
http://maping930883.blogspot.com/2012/06/adf134tree.html