我正在使用带有上下文菜单的PrimeFaces 6.2 p:tree
组件,该菜单对于每个节点都不同。当我左右单击鼠标右键时,菜单会正确显示,但是当我直接单击鼠标右键时,菜单不会更新。有什么解决方法的想法吗?
我知道右键单击(事件contextMenu
)后有一些有关ajax的帖子,但这没有帮助,因为上下文菜单消失了。
示例p:tree
如下所示:
<p:tree id="docs" value="#{treeContextMenuView.root}" var="doc"
selectionMode="single"
selection="#{treeContextMenuView.selectedNode}" dynamic="true">
<p:ajax event="select" update="form:contextMenu" />
<p:treeNode expandedIcon="ui-icon-folder-open"
collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{doc.name}" />
</p:treeNode>
<p:treeNode type="document" icon="ui-icon-document">
<h:outputText value="#{doc.name}" />
</p:treeNode>
<p:treeNode type="picture" icon="ui-icon-image">
<h:outputText value="#{doc.name}" />
</p:treeNode>
<p:treeNode type="mp3" icon="ui-icon-video">
<h:outputText value="#{doc.name}" />
</p:treeNode>
</p:tree>
并像这样采样p:contextMenu
:
<p:contextMenu for="docs" id="contextMenu">
<p:menuitem value="View" update="messages"
actionListener="#{treeContextMenuView.displaySelectedSingle}"
icon="ui-icon-search" />
<p:menuitem value="Item for Documents"
rendered="#{treeContextMenuView.selectedNode.data.name eq 'Documents'}"
icon="ui-icon-print" />
<p:menuitem value="Delete" update="docs"
actionListener="#{treeContextMenuView.deleteNode}"
icon="ui-icon-close" />
</p:contextMenu>
完全可复制的MVCE:https://github.com/szydra/primefaces-test
编辑:最近,我发现了与p:dataTable
相同的问题:
issue on github。