有很多p:树只有一个选择变量?

时间:2014-12-23 11:29:15

标签: jsf jsf-2 primefaces

我有很多<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

提前感谢您的时间和答案

2 个答案:

答案 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侦听器中,您必须自己从列表中弹出或拉出所选节点