我对菜单项有疑问。目标是在菜单中有两个菜单项,然后单击数据表中的图标,该菜单项会触发两个不同的操作,从而弹出菜单。一切正常:弹出菜单并渲染菜单。 但是,当我尝试使用定义了两个不同命令的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:
似乎无法呈现第二条命令的动作和更新。
请帮助。
答案 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()");
}
希望这会有所帮助。
最诚挚的问候。