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