只是一切顺利。
当我将treeNode与contextMenu相关联时,问题就开始了。每次我右键单击一个节点来查看我的contextMenu,它会显示我的中心页面的加载时间。看起来像是右键单击并选择一个混乱的人,接管的是选择节点。
是否可以将这两个事件分开?
是否可以采取其他措施,或有解决方法?
我找到的解决方法是在每个节点下放置一个commandLink。它不起作用,特别是对于儿子节点。
感谢您的帮助
<h:form id="formMenuAdmin" >
<p:panel header="Domaines" id="panelDomaines" style="border: none;width: auto" >
<p:contextMenu for="treeMenuAdmin" id="contextMenuTreeNodeDomaine" nodeType="Domaine">
<p:menuitem id="menuitemAdd" value="Créer " icon="ui-icon-search" actionListener="#{domaineCtrl.afficherDialogOrg('dialogCreateDgdsVar')}">
</p:menuitem>
<p:menuitem id="menuitemEdit" value="Editer" icon="ui-icon-search">
</p:menuitem>
<p:menuitem id="menuitemUpdate" value="Modifier" icon="ui-icon-search">
</p:menuitem>
<p:menuitem id="menuitemDelete" value="Supprimer" icon="ui-icon-search">
</p:menuitem>
</p:contextMenu>
<p:contextMenu for="treeMenuAdmin" id="contextMenuTreeNodeSousDomaine" nodeType="Dss">
<p:menuitem id="menuitemAddDss" value="Créer"
icon="ui-icon-search"
actionListener="#{domaineCtrl.afficherDialogOrg('dialogCreateDss')}">
</p:menuitem>
<p:menuitem id="menuitemEditDss" value="Editer"
icon="ui-icon-search" actionListener="#">
</p:menuitem>
<p:menuitem id="menuitemUpdateDss" value="Modifier "
icon="ui-icon-search" actionListener="#">
</p:menuitem>
<p:menuitem id="menuitemDeleteDss" value="Supprimer"
icon="ui-icon-search" actionListener="#">
</p:menuitem>
</p:contextMenu>
<p:tree id="treeMenuAdmin" value="#{treeNodeCtrl.rootTreeNode}"
var="doc" selectionMode="single"
selection="#{treeNodeCtrl.selectedTreeNode}"
style="width: auto;border: none" cache="true" >
<p:ajax event="select" listener="#{treeNodeCtrl.onNodeSelect()}" />
<p:treeNode id="treeNodeDomaine" type="Domaine"
expandedIcon="ui-icon-folder-open"
collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{doc.nom}" id="outputTextDomaine#{doc}"/>
</p:treeNode>
<p:treeNode id="treeNodeDss" type="Dss" >
<h:outputText value="#{doc.nom}" id="outputTextDss" />
</p:treeNode>
</p:tree>
</p:panel>
</h:form>
答案 0 :(得分:1)
切换到PF 5.0将允许您使用isContextMenu
方法。这将带来的唯一区别在于您的onNodeSelect
方法。
public void onNodeSelect(NodeSelectEvent event){
if (!event.isContextMenu()){
//original code here.
}
}
这样,如果未调用contextMenu,将执行原始选择代码。