PrimeFaces 3.5动态上下文菜单使用菜单模型和primefaces的静态上下文菜单不能一起工作

时间:2014-01-29 07:38:26

标签: jsf jsf-2 primefaces

我在我的应用程序中使用PrimeFaces 3.5。

  1. 我在代码中做了一些更改,我开始使用动态上下文菜单使用服务器端代码而不是静态的简单上下文菜单。
  2. 示例代码

            MenuItem menu1= new MenuItem();
            menu1.setValue(Label);
            menu1.setActionExpression(expFact.createMethodExpression(elCtx, "#{classname.methodname}", Void.class, new Class[0]));
            menu1.setOncomplete("Dialog1.show()");
            model.addMenuItem(menu1);
    
    1. 这个动态菜单运行正常。
    2. 在oncomplete事件的上下文菜单中,会弹出一个Dialog。我正在为此对话框使用另一个简单的上下文菜单。之前我能够处理对话框上的上下文菜单,但是我在主xhtml页面上更改了动态上下文菜单。现在,上下文菜单没有出现在对话框中。
    3. 我没有在浏览器上收到任何异常或错误,所以我无法找到原因导致我的简单上下文菜单丢失或者我现在需要做些什么来处理对话框上的简单上下文菜单?

      请帮助我,并提前致谢。

1 个答案:

答案 0 :(得分:0)

实际上我使用的是Datatable,在数据表中我无法实现上下文菜单。但我使用了简单的解决方案,我的问题得到了解决。

<p:contextMenu for="Tableid" id="contextid" widgetVar="contextwidgetvar">
  <p:menuitem value="Menu 1"  oncomplete="confirmationdialog.show()" />
</p:contextMenu>
<p:dataTable id="Tableid" widgetVar="Table" var="sItem" 
   value="#{classname.methodname}"  rowKey="#{sItem.id}" selection="#{classname.methodname.selectedObject}"selectionMode="single" lazy="true" editable="true">
<p:ajax event="contextMenu" oncomplete="contextwidgetvar.show();" />
</p:dataTable>

这个简单的步骤解决了这个问题。 有时候你可能需要添加一些javascript来避免总是得到所选对象的第一行。