我有很多<p:tree>
个项目,所有项目都启用了选择,但我希望所有这些项目都使用相同的选择变量,但只是创建的最后一个树设置了值,其他选择不会传递给托管bean。
这是谁创建树的代码
<p:accordionPanel>
<c:forEach items="#{grupController.listRepo}" var="repo">
<p:tab title="#{repo.nome}">
<p:tree cache="false" dynamic="true"
value="#{grupController.listRepo(repo.id)}" var="item"
selectionMode="checkbox" id="arbol"
selection="#{grupController.categoriesAutorized()}">
<p:treeNode expandedIcon="ui-icon-folder-open"
collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{item}" />
</p:treeNode>
</p:tree>
</p:tab>
</c:forEach>
</p:accordionPanel>
在我的托管bean中我有这个变量
private TreeNode[] categoriesAutorized;
就像我之前所说的那样,这个变量总是空的,但是当所选的项目来自最后一棵树时。
如何修复此行为并在一个变量中包含所选项目的完整列表?
我正在使用PrimeFaces 5.1
提前感谢您的时间和答案
答案 0 :(得分:0)
<p:accordionPanel/>
具有value
属性,允许您根据支持列表中的项目构建手风琴的内容。使用此,您的示例现在看起来像
<p:accordionPanel value="#{grupController.listRepo}" var="repo">
<p:tab title="#{repo.nome}">
<p:tree cache="false" dynamic="true"
value="#{grupController.listRepo(repo.id)}" var="item"
selectionMode="checkbox" id="arbol"
selection="#{grupController.categoriesAutorized()}">
<p:treeNode expandedIcon="ui-icon-folder-open"
collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{item}" />
</p:treeNode>
</p:tree>
</p:tab>
</p:accordionPanel>
答案 1 :(得分:0)
您可以使用ajax based selection。 grupController.categoriesAutorized的setter应该在那里但是有一个空体。
在nodeSelect和nodeUnselect侦听器中,您必须自己从列表中弹出或拉出所选节点