2014-10-10 146 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> 
相關問題