Primefaces 6问题通过操作动态添加菜单项

时间:2019-04-05 07:35:40

标签: java primefaces menuitem

我对菜单项有疑问。目标是在菜单中有两个菜单项,然后单击数据表中的图标,该菜单项会触发两个不同的操作,从而弹出菜单。一切正常:弹出菜单并渲染菜单。 但是,当我尝试使用定义了两个不同命令的menuItem在服务器端创建菜单来创建菜单时,出现可视化错误,但是当我仅使用一个命令时,它可以正常工作。

我尝试仅使用一个,但效果很好,我尝试先使用“ ONE”,然后使用“ TWO”,但效果很好,但是当我同时使用两者时,它会爆炸。

代码如下:

DefaultMenuItem firstmenuitem = new DefaultMenuItem("ONE");
firstmenuitem.setIcon("ui-icon-newwin");
firstmenuitem.setCommand("#{myMB.loadDetail1(row, dynMetaCol.id)}");
firstmenuitem.setUpdate("dialog1");
firstmenuitem.setOncomplete("PF('DlgWv1').show()");
menuModel.addElement(firstmenuitem);

DefaultMenuItem secondMenuItem = new DefaultMenuItem("TWO");
secondMenuItem.setIcon("ui-icon-newwin");
secondMenuItem.setCommand("#{myMB.loadDetail2(row, dynMetaCol.id)}");
secondMenuItem.setUpdate("dialog2");
secondMenuItem.setOncomplete("PF('DlgWv2').show()");
menuModel.addElement(secondMenuItem);

xhtml的内容是这样的:

...

<p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom" styleClass="ui-menu-context ui-menuitem-link" model="#{myMB.menuModel}"/>

...

结果:

XML Parsing Error: unclosed CDATA section
Location: http://myaddress/mywebapp/templates/myfolder
/myfolder/mypage.xhtml
Line Number 19, Column 5647:

似乎无法呈现第二条命令的动作和更新。

请帮助。

1 个答案:

答案 0 :(得分:0)

由于我无法解释这个问题,所以我找到了一个工作区。

抱歉,我删除了以下几行:

firstmenuitem.setUpdate("dialog1");
firstmenuitem.setOncomplete("PF('DlgWv1').show()");

secondMenuItem.setUpdate("dialog2");
secondMenuItem.setOncomplete("PF('DlgWv2').show()");

进入每个动作方法(loadDetail1和loadDetail2),我使用以下简单方法:

public static void updateAndShowDialog(String dialogId, String widgetVarName) {
    RequestContext requestContext = RequestContext.getCurrentInstance();
    requestContext.update(dialog);
    requestContext.execute("PF('" + widgetVarName + "').show()");
}

希望这会有所帮助。

最诚挚的问候。