我正在使用Primefaces 6.1。树的创建工作正常,它也会在单击左侧的三角形时对树进行扩展做出反应。它还会在单击节点时触发事件。但是......我想在点击节点时展开树。我无法将其付诸实践。
这是树代码片段:
<p:tree id="tree"
value="#{managedBeanFolder.root}"
var="node"
styleClass="tree-noborder"
selectionMode="single">
<p:ajax update=":folderListe:docListLatest" event="select" listener="#{managedBeanFolder.onNodeSelectListe}"/>
<p:treeNode>
<h:outputText value="#{node}" style="border:none" />
</p:treeNode>
</p:tree>
我的ViewScoped ManagedBean看起来像这样
public void onNodeSelectListe(NodeSelectEvent event) {
RequestContext context = RequestContext.getCurrentInstance();
TreeNode selectedNode = (TreeNode) event.getTreeNode();
if (selectedNode != null) {
if (selectedNode.getChildCount() > 0) {
if (selectedNode.isExpanded()) {
selectedNode.setExpanded(false);
context.update("folderListe:tree");
} else {
selectedNode.setExpanded(true);
context.update("folderListe:tree");
}
}
}
}
我已经检查过,代码已执行。当我通过单击三角形展开树时,selectedNode.isExpanded()为true,当我通过单击三角形折叠时,值为false。但该网站没有更新。
有什么问题? 非常感谢
答案 0 :(得分:1)
您需要更新树:
<p:ajax update=":folderListe:docListLatest @this"
答案 1 :(得分:0)
我能够解决这个问题。通过更改JSF-part和托管bean。 这是我的JSF-Part:
<p:tree id="tree"
value="#{managedBeanFolder.root}"
var="node"
style="border: none; width:300px; float: left; color: red; font-size: 102%;line-height: 1.847;"
styleClass="tree-noborder"
selectionMode="single"
>
<p:ajax update="folderListe:docListLatest, folderListe:tree"
event="select"
listener="#{managedBeanFolder.onNodeSelectListe}"
process="tree"/>
<p:treeNode>
<h:outputText value="#{node}" style="border: none" />
</p:treeNode>
</p:tree>
我的表单的ID是'folderListe','docListLatest'是通过单击节点刷新的数据表。
在我的托管bean中,我有这个监听器:
public void onNodeSelectListe(NodeSelectEvent event) {
RequestContext context = RequestContext.getCurrentInstance();
TreeNode selectedNodeLocal = (TreeNode) event.getTreeNode();
selectedNode = selectedNodeLocal;
if (selectedNode != null) {
if (selectedNode.getChildCount() > 0) {
if (selectedNode.isExpanded()) {
selectedNode.setExpanded(false);
context.update("folderListe:tree");
} else {
selectedNode.setExpanded(true);
context.update("folderListe:tree");
}
}
}
int folder = (int) folderIden.get(selectedNode.getRowKey());
setFolderID(folder);
setFolderName(selectedNode.toString());
context.update("folderListe:docListLatest");
// application specific things to remember
SharedObjects so = new SharedObjects();
so.setFolderID(folder);
getManagedBeanWebdokument().setFolderID(folderID);
getManagedBeanWebdokument().setFolderName(getFolderName());
}
突然之间,它做了我想做的事情: - )