Primefaces 6 Проблема Добавление динамически меню с действиями - PullRequest
0 голосов
/ 05 апреля 2019

У меня проблема с пунктом меню.цель состоит в том, чтобы в меню всплыло два элемента меню, щелкнув значок из таблицы данных, в которой запускаются два различных действия.все работает нормально: всплывающее меню и меню отображается.но когда я пытаюсь создать меню с серверной стороны, созданной 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 Ответ

0 голосов
/ 05 апреля 2019

Так как я не могу объяснить проблему, я нашел обходной путь.

просто удалил эти строки:

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()");
}

надеюсь, это поможет.

С наилучшими пожеланиями.

...