2014-10-10 145 views
1

我的应用程序中有一个黄金树。我试图加载所有的数据,只要有一部分被使用就可以加载2500个对象。所以我试图实现som类的延迟加载。第一级在启动时加载,我想在展开节点时加载必要的数据。我搜索了一些例子,并将其修改为我的目的。但在我的情况下,阿贾克斯不会开火。我在这里错过了什么?为什么ajax事件不会触发?

XHTML的部分

<h:form> 
    <p:panel id="add_elev2list" 
      header="lägg till elev" 
      collapsed="true" 
      toggleable="true"> 
     <p:tree value="#{bookb.root}" 
       var="node" 
       dynamic="true" > 
      <p:ajax event="select" 
        update="@this" 
        listener="#{bookb.onNodeSelect}"/> 
      <p:treeNode > 
       <h:outputText value="#{node}" /> 
      </p:treeNode> 
     </p:tree> 
    </p:panel> 
</h:form> 

加载树的第一级之前是

public void triggerTreeBuild() { 
    root = new DefaultTreeNode("Root", null); 
    ObjectContainer localdb = dbConnector.connDB(); 
     ObjectSet<sbasUserList> res; 
     Query query = localdb.query(); 
     query.constrain(sbasUserList.class); 
     //query.descend("klass").constrain(true); 
     res = query.execute(); 
     for(sbasUserList sbu : res){ 

      if(sbu.isKlass()) { 
       TreeNode node0 = new DefaultTreeNode(sbu.getGroupname(), root); 
       node0.getChildren().add(new DefaultTreeNode("head")); 
       } 
     } 
     localdb.close(); 

} 

工作正常建设。 ajax事件应该触发这个,但它不会发生。

public void onNodeSelect(NodeSelectEvent nee){ 
    log("expand"); //wrapper for System.out.println ... for some sort of debugging. 
    sbasUserList sbu = (sbasUserList) nee.getTreeNode().getData(); 
    String[] allstd = sbu.getAllusers().split(","); 
    ObjectContainer localdb = dbConnector.connDB(); 
     for(String persnum : allstd){ 
      nee.getTreeNode().getChildren().add(new DefaultTreeNode(
        getUserbyPersnum(localdb,persnum).getRealname())); 
     } 
     localdb.close(); 
} 

任何想法为什么?

问候 拉尔夫

使用Tomcat 7.0.52 JSF 2.2和4.0 primefaces

回答

1

由于您没有设置属性selectionMode="single"

<p:tree value="#{treeBasicView.root}" 
     var="node" 
     dynamic="true" 
     selectionMode="single"> 
    <p:ajax event="select" listener="#{treeBasicView.onNodeSelect}" /> 
    <p:treeNode> 
     <h:outputText value="#{node}" /> 
    </p:treeNode> 
</p:tree> 
相关问题