Jsf 如何将部分选定的Treenode添加到p:tree中的SelectedNodes中
我在PrimeFaces中使用树组件。在此组件中,选定节点将自动添加到选定节点阵列中。但是,我需要将部分选定节点添加到此选定节点数组中。在这种情况下我能做什么,你能帮我吗Jsf 如何将部分选定的Treenode添加到p:tree中的SelectedNodes中,jsf,primefaces,tree,Jsf,Primefaces,Tree,我在PrimeFaces中使用树组件。在此组件中,选定节点将自动添加到选定节点阵列中。但是,我需要将部分选定节点添加到此选定节点数组中。在这种情况下我能做什么,你能帮我吗 <p:tree id="treCard" value="#{authorizeBean.rootCard}" var="Folder" propagateSelectionUp="false" showUnselectableCheckbox="true" style="border:0px none;backg
<p:tree id="treCard" value="#{authorizeBean.rootCard}" var="Folder" propagateSelectionUp="false" showUnselectableCheckbox="true" style="border:0px none;background:none; " selectionMode="checkbox" dynamic="true" selection="#{authorizeBean.selectedNodes}">
<p:treeNode class="authorizationPage" expandedIcon="ui-icon-folder-open" collapsedIcon="ui-icon-folder-collapsed" >
<h:outputText value="#{Folder.tag}">
</h:outputText>
</p:treeNode>
<p:treeNode class="authorizationPage" type="page" icon="ui-icon-document">
<h:outputText value="#{Folder.tag}" />
</p:treeNode>
<p:treeNode class="authorizationPage" type="tab" icon="fa fa-bars">
<h:outputText value="#{Folder.tag}" />
</p:treeNode>
<p:treeNode class="authorizationPage" type="button" icon="fa fa-square-o">
<h:outputText value="#{authorizeBean.btnName(Folder.tag)}" />
</p:treeNode>
</p:tree>
您必须创建一个根节点,并将要显示的部分附加到根节点示例create root:
root=new DefaultTreeNode(new YourJavaClass(),null)代码>
然后,将它与partiel树对齐:PartielTree=newdefaulttreenode(newyourjavaclass(),root)
您必须创建一个根节点,并将要显示的部分附加到根节点示例create root:root=new DefaultTreeNode(new YourJavaClass(),null)代码>
然后,将它与partiel树对齐:PartielTree=newdefaulttreenode(newyourjavaclass(),root)代码>因为primeface不将部分选定节点包含到选定节点中,
因此,下面的函数是一种将部分选定节点包含到选定节点中的方法,每次使用selectedNodes数组之前必须调用该函数,否则selectedNodes将不包含部分选定节点。(调用everytime,因为primefaces会在每次请求时更新此数组-几乎;)
这里的“selectedNodes”是一个TreeNode数组,primeface framework将在其中存储选定的节点
public void updatePartialSelectedNodes() {
Set<TreeNode> allSelected = new HashSet<>();
if (selectedNodes != null && selectedNodes.length != 0) {
for (TreeNode sel : selectedNodes) {
allSelected.add(sel);
if (!((yourTreeDataObject)sel.getData()).isSupplier() && sel.getParent().isPartialSelected()) {
allSelected.add(sel.getParent());
}
}
}
selectedNodes = new TreeNode[allSelected.size()];
selectedNodes = allSelected.toArray(selectedNodes);
}
由于primeface不将部分选定节点包含到选定节点中,
因此,下面的函数是一种将部分选定节点包含到选定节点中的方法,每次使用selectedNodes数组之前必须调用该函数,否则selectedNodes将不包含部分选定节点。(调用everytime,因为primefaces会在每次请求时更新此数组-几乎;)
这里的“selectedNodes”是一个TreeNode数组,primeface framework将在其中存储选定的节点
public void updatePartialSelectedNodes() {
Set<TreeNode> allSelected = new HashSet<>();
if (selectedNodes != null && selectedNodes.length != 0) {
for (TreeNode sel : selectedNodes) {
allSelected.add(sel);
if (!((yourTreeDataObject)sel.getData()).isSupplier() && sel.getParent().isPartialSelected()) {
allSelected.add(sel.getParent());
}
}
}
selectedNodes = new TreeNode[allSelected.size()];
selectedNodes = allSelected.toArray(selectedNodes);
}
需要在同一数组中添加选定节点和部分选定节点。但是,现在未将部分选定节点添加到此数组@YagamiLightI不理解您的评论,请提供更多信息谢谢。需要将选定节点和部分选定节点添加到同一数组中。但是,现在未将部分选定节点添加到此数组@YagamiLightI不理解您的评论请提供更多信息谢谢。您找到解决方案了吗?最后,我在树上迭代查找部分选定的节点,并将它们添加到辅助数组中。然后将这个辅助数组和树用作支持bean的数组合并到一个新的节点中。最后,将这个新结构指定为保存所选节点的支持bean的变量的值。这在我的情况下起了作用。如果树不太大,我想执行不会有问题。你找到解决方案了吗?最后我在树上迭代寻找部分选定的节点,并将它们添加到辅助数组中。然后将这个辅助数组和树用作支持bean的数组合并到一个新的节点中。最后,将这个新结构指定为保存所选节点的支持bean的变量的值。这在我的情况下起了作用。如果树不是太大,我想表演是没有问题的。