Tree组件使用指南之三:定制SelectionListener
来源:互联网 发布:淘宝开书店需要的证书 编辑:程序博客网 时间:2024/06/14 14:43
运行环境:JDeveloper 11.1.2.2.0 + Oracle Database 10g Express Edition 10.2.0.1。
默认情况下,Tree组件的SelectionListener绑定的值型如:"#{bindings.DepartmentsView1.treeModel.makeCurrent}"。
实际场景中,可能需要在点击树节点时调用自己的逻辑,这时就需要定制SelectionListener。
把Selection Listener指向Managed Bean中的一个方法,比如:selectionListener="#{myBackingBean.treeSelectionListener}" 。
然后在该方法中用代码实现makeCurrent功能,并在其后加入自己的逻辑。
本实验前面的步骤和《Tree组件使用指南之一:创建》一样。以下只对重点步骤说明:
1. 修改Tree的Selection Listener,指向Managed Bean中的方法
2. Managed Bean的完整代码
3. 运行,输出如下
########################### rowType EmployeesView
########################### nodeStuctureDefname model.EmployeesView
########################### rowType DepartmentsView
########################### nodeStuctureDefname model.DepartmentsView
可以看出,点击不同的树节点时输出了每个节点的类型。
Project 下载:ADF_Tree_SelectionListener.7z
说明,本来想按照参考文献2写一个通用的treeSelectionListener,但是没有成功。
经过反复试验发现必须先要执行Tree原来绑定的SelectionListener,然后才可以调用自己的逻辑,否则findNodeByKeyPath(key)会返回Null。
参考文献:
1. https://blogs.oracle.com/jdevotnharvest/entry/how_to_read_data_from
默认情况下,Tree组件的SelectionListener绑定的值型如:"#{bindings.DepartmentsView1.treeModel.makeCurrent}"。
实际场景中,可能需要在点击树节点时调用自己的逻辑,这时就需要定制SelectionListener。
把Selection Listener指向Managed Bean中的一个方法,比如:selectionListener="#{myBackingBean.treeSelectionListener}" 。
然后在该方法中用代码实现makeCurrent功能,并在其后加入自己的逻辑。
本实验前面的步骤和《Tree组件使用指南之一:创建》一样。以下只对重点步骤说明:
1. 修改Tree的Selection Listener,指向Managed Bean中的方法
2. Managed Bean的完整代码
package view;import java.util.Iterator;import java.util.List;import oracle.adf.view.rich.component.rich.data.RichTree;import oracle.jbo.Row;import oracle.jbo.uicli.binding.JUCtrlHierBinding;import oracle.jbo.uicli.binding.JUCtrlHierNodeBinding;import oracle.jbo.uicli.binding.JUCtrlHierTypeBinding;import org.apache.myfaces.trinidad.event.SelectionEvent;import org.apache.myfaces.trinidad.model.CollectionModel;import org.apache.myfaces.trinidad.model.RowKeySet;import view.util.JSFUtils;public class MyBackingBean { public MyBackingBean() { } public void treeSelectionListener(SelectionEvent selectionEvent) { JSFUtils.invokeMethodExpression("#{bindings.DepartmentsView1.treeModel.makeCurrent}", Object.class, SelectionEvent.class, selectionEvent); RichTree tree = (RichTree)selectionEvent.getSource(); RowKeySet rowKeySet = selectionEvent.getAddedSet(); Iterator rksIterator = rowKeySet.iterator(); while (rksIterator.hasNext()) { List key = (List)rksIterator.next(); JUCtrlHierBinding treeBinding = null; CollectionModel collectionModel = (CollectionModel)tree.getValue(); treeBinding = (JUCtrlHierBinding)collectionModel.getWrappedData(); JUCtrlHierNodeBinding nodeBinding = treeBinding.findNodeByKeyPath(key); Row rw = nodeBinding.getRow(); String rowType = rw.getStructureDef().getDefName(); System.out.println("########################### rowType " + rowType); JUCtrlHierTypeBinding typeBinding = nodeBinding.getHierTypeBinding(); String nodeStuctureDefname = typeBinding.getStructureDefName(); System.out.println("########################### nodeStuctureDefname " + nodeStuctureDefname); } }}
3. 运行,输出如下
########################### rowType EmployeesView
########################### nodeStuctureDefname model.EmployeesView
########################### rowType DepartmentsView
########################### nodeStuctureDefname model.DepartmentsView
可以看出,点击不同的树节点时输出了每个节点的类型。
Project 下载:ADF_Tree_SelectionListener.7z
说明,本来想按照参考文献2写一个通用的treeSelectionListener,但是没有成功。
经过反复试验发现必须先要执行Tree原来绑定的SelectionListener,然后才可以调用自己的逻辑,否则findNodeByKeyPath(key)会返回Null。
参考文献:
1. https://blogs.oracle.com/jdevotnharvest/entry/how_to_read_data_from
2. http://www.oracle.com/technetwork/developer-tools/adf/learnmore/25-generic-tree-selection-listener-169164.pdf
http://maping930883.blogspot.com/2012/06/adf133treeselectionlistener.html
0 0
- Tree组件使用指南之三:定制SelectionListener
- Table 组件使用指南之六:定制SelectionListener
- Table 组件使用指南:定制SelectionListener
- Table 组件使用指南之十二:定制列字段过滤组件
- Tree组件使用指南之十:获取选中的Tree节点
- Tree组件使用指南之二:点击树节点刷新表单
- Tree组件使用指南之一:创建
- Tree组件使用指南之八:使用Self-Referencing VO创建Tree
- Tree组件使用指南之九:使用ViewCriteria过滤Tree子节点
- Table 组件使用指南:定制列字段过滤组件
- Tree组件使用指南之四:点击不同的树节点显示不同的表单
- Tree组件使用指南之五:点击树节点文字展开或收缩其子节点
- Tree组件使用指南之六:不同的树节点显示不同的图标
- Tree组件使用指南之七:让树节点支持mouseOver事件
- Table 组件使用指南之三:一次删除Table多行记录
- Table 组件使用指南之三:一次删除Table多行记录
- android 定制组件的三种方式
- Android定制组件的三种方式
- Tree组件使用指南之二:点击树节点刷新表单
- hdoj 3784 继续xxx定律
- POJ2540-Hotter Colder(半平面交)
- 基于Mockito+TestNG及自动装配注解的Spring MVC集成测试
- poj2195--Going Home(最小费用最大流)
- Tree组件使用指南之三:定制SelectionListener
- Nginx防盗链的3种方法
- weka的关联使用方法
- Tree组件使用指南之四:点击不同的树节点显示不同的表单
- Android-广播机制
- D7可以打开DLL接口的代码D2007打开DLL.dpr打开看不到DLL接口代码(这样操作就可以了)
- Tree组件使用指南之五:点击树节点文字展开或收缩其子节点
- 不动产登记局编制确定 定编24人中13人为领导
- Tree组件使用指南之六:不同的树节点显示不同的图标