Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 有多个p:树,只有一个选择变量吗?_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf 有多个p:树,只有一个选择变量吗?

Jsf 有多个p:树,只有一个选择变量吗?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有许多项,所有这些项都启用了选择,但我希望所有项都使用相同的选择变量,但只有最后创建的树设置了值,其他选择不会传递给托管bean 这是谁创建树的代码 <p:accordionPanel> <c:forEach items="#{grupController.listRepo}" var="repo"> <p:tab title="#{repo.nome}"> <p:tree cache="false"

我有许多
项,所有这些项都启用了选择,但我希望所有项都使用相同的选择变量,但只有最后创建的树设置了值,其他选择不会传递给托管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>
就像我前面说的,这个变量总是空的,但是当所选项目来自最后一个树时

如何修复此行为,并在单个变量中包含选定项的完整列表

我用的是PrimeFaces5.1

提前感谢您的时间和回答

有一个
属性,允许您根据支持列表中的项目构建手风琴的内容。使用这个,您的示例现在看起来像

        <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>

您可以使用。grupController.categoriesAutorized的setter应该在那里,但主体为空


在节点选择和节点选择侦听器中,您必须自己从列表中弹出或拉出所选节点

是否有任何原因不使用accordion面板的datamodel支持的变体?@kolossus抱歉,但我不理解您的问题您是否知道在accordion中创建迭代子组件的
c:forEach
方法的替代方法面板?@kolossus没有,但是如果你推荐一些阅读的东西,我会非常感激。
        <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>