#java #primefaces #menuitem
#java #primefaces #элемент меню
Вопрос:
У меня проблема с menuitem. цель состоит в том, чтобы иметь два элемента меню в меню, которое появляется при нажатии на значок из datatable, который запускает два разных действия. все работает нормально: появляется меню, и меню отображается. но когда я пытаюсь создать меню с помощью MenuItem, созданного на стороне сервера с двумя разными командами, я получаю ошибку в визуализации, но, когда я использую только одну команду, она работает нормально.
Я пытался использовать только один, и он работает нормально, я попытался использовать сначала «ОДИН», а затем «ДВА», и он работает нормально, но он взрывается, когда я пытаюсь использовать оба вместе.
вот код:
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. хорошо, похоже, что проблема заключается в этих двух строках: secondMenuItem.setUpdate(«dialog2»); secondMenuItem.setOncomplete(«PF(‘DlgWv2’).show()»);
2. хорошо, возможно, я нашел проблему. это тот самый secondMenuItem.setUpdate(«dialog2»);. Я попытаюсь использовать тот же диалог и указать «если», но я не могу понять, как возникает эта проблема
Ответ №1:
Поскольку я не могу объяснить проблему, я нашел обходной путь.
проще говоря, я удалил эти строки:
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()");
}
надеюсь, это может помочь.
с наилучшими пожеланиями.