我在PrimeFaces中使用树组件。在此组件中,所选节点将自动添加到选定节点阵列中。但是,我需要将部分选定节点添加到此选定节点数组中。在这种情况下我能做些什么,你能帮助我吗?
<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>
答案 0 :(得分:0)
您必须创建根节点并将要显示的部分附加到根示例创建根目录:PartielTree = new DefaultTreeNode( new YourJavaClass(), root);
之后,你用你的伙伴树排成一行:RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?foo.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?foo.com.*$ [NC]
RewriteRule .*\.(gif|jpg)$ - [F]
答案 1 :(得分:0)
由于primeface不包括部分选定节点到选定节点, 所以下面的函数是将部分选定节点包含到所选节点中的hack,并且必须在每次使用selectedNodes数组之前调用它,否则selectedNodes将不包含部分选定的节点。 (每次调用因为primefaces在每个请求上更新这个数组 - 几乎;)) 这里&#39; selectedNodes&#39;是一个TreeNode数组,其中primeface框架将存储选定的节点
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);
}
Edit1:其他选项,如果树的长度不超过100个节点且不超过2个级别,则可能很好。您可以遍历树根节点子节点并使用TreeNode.isSelected()或TreeNodes进行检查。 isPartialSelected(),因为primefaces框架也会在主树中更新它,无论节点是选中还是部分选中或未选中。
深度为两级......一个例子
for (TreeNode tn : this.treeRoot.getChildren()) {
for (TreeNode child : tn.getChildren()) {
if (child.isSelected()) {
selectionString.append(((TreeNodeObjectDataWrapper)child.getData()).getId());
}
}
}