有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PrimeFaces树在选择多个节点时显示不同的上下文菜单

我正在开发PrimeFaces网络应用程序。我刚开始接触,所以请容忍我

我有一个包含多种节点类型的树-每个节点都有自己的上下文菜单。 我的问题是,当选择单个节点和多个节点时,我希望能够显示不同的上下文菜单。 树的选择模式显然应该是multiple

代码:

    <!-- Here should be context menu for when multiple nodes are selected -->
    <!--        <p:contextMenu for="tree"> -->
    <!--            <p:menuitem value="Multiple Items Selected"> -->
    <!--            </p:menuitem> -->
    <!--        </p:contextMenu> -->

    <p:contextMenu for="tree" nodeType="type1">
        <p:menuitem value="Type 1 Selected">
        </p:menuitem>
    </p:contextMenu>

    <p:contextMenu for="tree" nodeType="type2">
        <p:menuitem value="Type 2 Selected">
        </p:menuitem>
    </p:contextMenu>

    <p:contextMenu for="tree" nodeType="type3">
        <p:menuitem value="Type 3 Selected">
        </p:menuitem>
    </p:contextMenu>

    <p:tree id="tree" value="#{treeBean.root}" var="node"
        selectionMode="multiple">
        <p:treeNode type="type1">
            <h:outputText value="#{node}" />
        </p:treeNode>

        <p:treeNode type="type2">
            <h:outputText value="#{node}" />
        </p:treeNode>

        <p:treeNode type="type3">
            <h:outputText value="#{node}" />
        </p:treeNode>
    </p:tree>

非常感谢


共 (1) 个答案

  1. # 1 楼答案

    我纯粹是在客户端通过更改我想要隐藏的菜单项的CSS来解决这个问题

    我对单选和多选都使用了一个上下文菜单,但是我隐藏了我不想在多选中显示的项目。 在多次选择的情况下,我想隐藏的每个菜单项都有一个style="class: multiple_tree_cm;"。 我使用了树上的上下文菜单事件

    示例树:

    <p:tree id="tree" widgetVar="treeWV">
        <p:ajax event"contextMenu" onstart="updateTreeContextMenu();"/>
         <p:treeNode .../>
    </p:tree>
    

    上下文菜单示例:

    <p:contextMenu for="tree">
        <p:menuitem ... styleclass="multiple_tree_cm"/> <!  don't want to show this for multiple selection  >
    </p:contextMenu>
    

    我通过向多个_tree_cm类菜单项添加css类来隐藏菜单项。 像这样:

    function updateTreeContextMenu(event) {
        if (PF('treeWV') && PF('treeWV').selections && PF('treeWV').selections.length === 1) {
            $('.multiple_tree_cm').removeClass('disabled');
        } else {
            $('.multiple_tree_cm').addClass('disabled');
        }
    }
    

    css:

    .multiple_tree_cm {}
    .disabled { height: 0 !important; display: none !important; }