Jsf 当从ManagedBean中预先选择节点时,如何获取p:tree中的选定节点?
在我的应用程序中,我在selectionMode:复选框中使用p:树。代码如下:Jsf 当从ManagedBean中预先选择节点时,如何获取p:tree中的选定节点?,jsf,primefaces,Jsf,Primefaces,在我的应用程序中,我在selectionMode:复选框中使用p:树。代码如下: <p:tree id="tree_permissoes" value="#{mBTipoUsuario.root}" var="node" selectionMode="checkbox" selection="#{mBTipoUsuario.selectedNodes} widgetVar="treeSingleWidget""> <p:treeNode> <
<p:tree id="tree_permissoes" value="#{mBTipoUsuario.root}" var="node" selectionMode="checkbox" selection="#{mBTipoUsuario.selectedNodes} widgetVar="treeSingleWidget"">
<p:treeNode>
<h:outputText value="#{node}"/>
</p:treeNode>
我在获取mBTipoUsuario.selectedNodes数组中的选定节点时遇到一些问题。当用户单击某个按钮时,我将从托管bean加载带有一些预先选择的节点的p:树。然后,用户可以在p:树中选择一些其他节点,并提交回托管bean。问题是,在mBTipoUsuario.selectedNodes数组中,我只得到用户显式检查的节点,但没有找到从托管bean中预先选择的节点
问题是:如何同时获得托管bean中的预选节点和用户显式选择的节点
我已经尝试在客户端选择要预选的节点,如下所示:
但我没有成功。有人能帮我吗?
谢谢。我已经解决了我的问题。以下是未来读者的解决方案。可以从客户端检查节点。这种方法可以正确地恢复托管bean中的所有节点,甚至是应用程序预先选择的节点,因为我们从客户端检查它们 执行此操作的解决方案如下所示: 但是在我们的例子中,我们不想选择节点,我们想检查它们,所以我们可以使用函数“toggleCheckboxNode”istead 最后的代码是:
StringBuilder sb = new StringBuilder();
sb.append("PrimeFaces.widgets.treeSingleWidget.toggleCheckboxNode(");
sb.append("$(\"#frm_edit\\\\:tree_permissoes\\\\:");
sb.append(root.getChildren().get(i).getChildren().get(k).getRowKey());
sb.append("\")");
sb.append(", true)");
RequestContext.getCurrentInstance().execute(sb.toString());