Primefaces 6 问题添加带有动作的动态菜单项
Primefaces 6 Problem Adding dynamically menuitem with actions
我的菜单项有问题。目标是将两个菜单项放入一个菜单中,单击数据表中的图标会弹出菜单,该图标会触发两个不同的操作。一切正常:弹出菜单并呈现菜单。
但是当我尝试使用定义了两个不同命令的 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:
似乎无法呈现第二个命令的操作和更新。
请帮忙。
由于我无法解释这个问题,所以我找到了解决方法。
抱歉,我删除了这些行:
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()");
}
希望对您有所帮助。
此致。
我的菜单项有问题。目标是将两个菜单项放入一个菜单中,单击数据表中的图标会弹出菜单,该图标会触发两个不同的操作。一切正常:弹出菜单并呈现菜单。 但是当我尝试使用定义了两个不同命令的 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:
似乎无法呈现第二个命令的操作和更新。
请帮忙。
由于我无法解释这个问题,所以我找到了解决方法。
抱歉,我删除了这些行:
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()");
}
希望对您有所帮助。
此致。