点击不同的树节点,显示不同的表单,这也是一个很常见的场景。
比如点击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
没有评论:
发表评论