adf树选择列表器不起作用,出现错误< oracle.adf.view> < RichRenderer> < decodeUnknownKey> < ATTEMPT_SYNC_UNKNOWN_KEY> [英] adf tree selection listner not working getting error <oracle.adf.view> <RichRenderer> <decodeUnknownKey> <ATTEMPT_SYNC_UNKNOWN_KEY>

查看:99
本文介绍了adf树选择列表器不起作用,出现错误< oracle.adf.view> < RichRenderer> < decodeUnknownKey> < ATTEMPT_SYNC_UNKNOWN_KEY>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以编程方式在adf中创建了一棵树.它显示正确,我也可以遍历,但是当我尝试单击任何节点时,我的 selectionListner()函数不起作用,而是在控制台上显示以下错误:

I have created a tree in adf programtically. It's showing correctly and I am also able to traverse but when I try clicking on any node, my selectionListner() function does not work instead it gives following error on console:

 <oracle.adf.view> <RichRenderer> <decodeUnknownKey>   
<ATTEMPT_SYNC_UNKNOWN_KEY>**

以下是我的代码 1)我创建了一个Employee类

Following is my code 1) I create an Employee class

 package view;
 import java.util.ArrayList;
 import java.util.List;

 public class Employee {
 private String name;
 private String location;
 private List<Employee> directs;

 public Employee(String name, String loc){
    this.name = name;
    this.location = loc;
    directs = new ArrayList<Employee>();
  }

public String getName() {
    return name;
}
  public String getLocation() {
    return location;
  }
  public List<Employee> getDirects() {
    return directs;
  }
  public void addDirect(Employee emp){
    directs.add(emp);
  }}

2)我用构造函数创建了一个托管bean:

2) I created a managed bean with a constructor:

List<Employee> allEmployees = new ArrayList<Employee>();
TreeModel employeeTree;

public TestPage_1() {
    super();
    Employee manager1 = new Employee("John","London");
        Employee emp = new Employee("Jack", "London");
        manager1.addDirect(emp);
        emp = new Employee("Ken","New York");
        manager1.addDirect(emp);
        Employee manager2 = new Employee("Ravi","Bangalore");
        emp = new Employee("Ramesh","Bangalore");
        manager2.addDirect(emp);
        Employee manager3 = new Employee("Raju","Pune");
        emp = new Employee("Rakesh","Pune");
        manager3.addDirect(emp);
        manager2.addDirect(manager3);
        emp = new Employee("Jamie","California");

        allEmployees.add(manager1);
        allEmployees.add(manager2);
        allEmployees.add(emp);     

        //Wrapping the list in to a class used by ADF TreeTable.

}

public TreeModel getModel() {
      employeeTree =
          new ChildPropertyTreeModel(allEmployees,"directs");
    return employeeTree;
  }

和选择侦听器:

public void nodeclicked(SelectionEvent selectionEvent) 
    String adfSelectionListener = "#{backingBeanScope.backing_testPage_1.model.makeCurrent}";

           FacesContext fctx = FacesContext.getCurrentInstance();
           Application application = fctx.getApplication();
           ELContext elCtx = fctx.getELContext();
           ExpressionFactory exprFactory = application.getExpressionFactory();
           MethodExpression me = null;
           me =
    exprFactory.createMethodExpression(elCtx, adfSelectionListener, Object.class, new Class[] { SelectionEvent.class });
           me.invoke(elCtx, new Object[] { selectionEvent });

           RichTree tree = (RichTree)selectionEvent.getSource();
           TreeModel model = (TreeModel)tree.getValue();
           //get selected nodes
           RowKeySet rowKeySet = selectionEvent.getAddedSet();
           Iterator rksIterator = rowKeySet.iterator();
           while (rksIterator.hasNext()) {
               List key = (List)rksIterator.next();
               JUCtrlHierBinding treeBinding = null;
               treeBinding = (JUCtrlHierBinding)((CollectionModel)tree.getValue()).getWrappedData();
               JUCtrlHierNodeBinding nodeBinding = treeBinding.findNodeByKeyPath(key);
               Row rw = nodeBinding.getRow();
               System.out.println("row: " + rw.getAttribute(0)); // You can get any attribute
               System.out.println("View Object name---->" + nodeBinding.getViewObject().getName());

           }
    }

我的树UI是:

<af:tree id="testPage_tree" var="node" value="#{backingBeanScope.backing_testPage_1.model}"
                         binding="#{backingBeanScope.backing_testPage_1.testPage_tree}"
                         selectionListener="#{backingBeanScope.backing_testPage_1.nodeclicked}">
                    <f:facet name="nodeStamp">
                        <af:outputLabel value="#{node.name}" id="ol1"
                                        binding="#{backingBeanScope.backing_testPage_1.ol1}"/>
                    </f:facet>
                </af:tree>

我试图找出选中树中的哪个节点,但是我的断点在选择侦听器功能中不起作用.

I am trying to find out which node in tree is selected but my breakpoints do not work in selection listener function.

推荐答案

您未设置树组件的rowSelection属性

这篇关于adf树选择列表器不起作用,出现错误&lt; oracle.adf.view&gt; &lt; RichRenderer&gt; &lt; decodeUnknownKey&gt; &lt; ATTEMPT_SYNC_UNKNOWN_KEY&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆