Как остановить выбор строки в дереве простых лиц после нажатия кнопки - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть дерево простых лиц с кнопкой и выходным текстом в treenode. Ajax строка выбора события вызывает рендеринг кнопки. Кнопка имеет простое меню, которое должно появляться при нажатии кнопки. Проблема в том, что нажатие кнопки вызывает событие выбора строки, и кнопка перерисовывается, и меню исчезает.

            <p:tree id="tree1" value="#{treeDNDView.root1}" var="node" selectionMode="single"
                    selection="#{treeDNDView.selectedNode1}">
                <p:ajax event="select" update=" mainform:tree1"/>
                <p:treeNode>
                    <h:panelGrid columns="3" columnClasses="width-5pct,verticalLine,width-95pct">
                        <p:outputPanel>
                            <p:commandButton id="dynaButton" value="Show" rendered="#{treeDNDView.selectedNode1.data eq node}" type="button"/>
                            <p:tieredMenu id="treeNodePanel" overlay="true" trigger="dynaButton" my="left top" at="left bottom">
                                <p:menuitem value="Save" action="#{menuView.save}"/>
                            </p:tieredMenu>
                        </p:outputPanel>
                        <p:spacer width="5px"/>
                        <p:outputPanel>
                            <h:outputText value="#{node}" escape="false"/>
                        </p:outputPanel>
                    </h:panelGrid>
                </p:treeNode>
            </p:tree>

Как разделить нажатие кнопки и выбрать ряд событий в этом случае? Как переписать код, чтобы функционал успешно работал?

1 Ответ

0 голосов
/ 12 апреля 2019

Проблема будет решена путем добавления .stopPropagation() к событию при нажатии.

                <p:outputPanel>
                    <div onclick="(function(e) { e.preventDefault(); e.stopPropagation(); })(event)">
                        <p:commandButton id="dynaButton" value="Show" rendered="#{treeDNDView.selectedNode1.data eq node}" type="button"/>
                        <p:tieredMenu id="treeNodePanel" overlay="true" trigger="dynaButton" my="left top" at="left bottom">
                            <p:menuitem value="Save" action="#{menuView.save}"/>
                        </p:tieredMenu>
                    </div>
                </p:outputPanel>
...