DataTable - ContextMenu - PullRequest
       25

DataTable - ContextMenu

1 голос
/ 10 апреля 2019

Primefaces Migration-Guide с 5.3 до 6.0:

ContextMenu: p: contextMenu должен быть помещен ПОСЛЕ целевого компонента (например, с данными) в текстовом формате.

Я попробовал именно это, но это не работает. Нет меню вообще.

Размещение ContextMenu перед dataTable: отображается меню. Дополнительный вывод на консоль браузера:

ContextMenu предназначается для виджета, который еще не доступен. Пожалуйста, поместите contextMenu после целевого компонента. targetWidgetVar: widget_base_cars

Журнал My Webshpere Liberty:

...org.primefaces.webapp.PostConstructApplicationEventListener  I Running on PrimeFaces 7.0

Java:

java.version = 1.8.0_102

Урезанный до витрина простых лиц

<h:body>

    <h1>Context Menu</h1>
    <h2>ContextMenu: p:contextMenu must be placed AFTER the target component</h2>

    <h:form id="base" >

        <p:dataTable id="cars" var="car" value="#{dtContextMenuView.cars}" rowKey="#{car.id}" >
            <f:facet name="header">
                List with #{dtContextMenuView.numberOfCars} Items
            </f:facet>
            <p:column headerText="Id">
                <h:outputText value="#{car.id}" />
            </p:column>
            <p:column headerText="Year">
                <h:outputText value="#{car.year}" />
            </p:column>
            <p:column headerText="Brand">
                <h:outputText value="#{car.brand}" />
            </p:column>
            <p:column headerText="Color">
                <h:outputText value="#{car.color}" />
            </p:column>
        </p:dataTable>

        <p:contextMenu for="cars" >
            <p:menuitem value="Hello" />
            <p:menuitem value="World" />
        </p:contextMenu>


        <h2>but it fails</h2>

    </h:form>

</h:body>

Я ожидаю, что меню будет отображаться при щелчке правой кнопкой мыши.

Это ошибка, или я ошибка?

1 Ответ

1 голос
/ 10 апреля 2019

Я воспроизвел это тестирование с PF 5.3 / 6.0 / 7.0. Я с вами, пока ваш p:dataTable недоступен для выбора:

p:contextMenu появляется при щелчке правой кнопкой мыши при добавлении над элементом p:dataTable в xhtml. При добавлении ниже контекстное меню не отображается вообще. Но tbh .: полезно ли контекстное меню для таблицы данных, которая не позволяет выбирать?

Когда его можно выбрать, добавив атрибуты

selection="#{myBean.selectedValue}" selectionMode="singel"

ведет себя так:

  • p:contextMenu ниже p:dataTable в соответствии с рекомендациями руководства по миграции: при щелчке правой кнопкой мыши выбирается строка, по которой щелкнули, и появляется контекстное меню.
  • p:contextMenu выше p:dataTable: при щелчке правой кнопкой мыши появляется контекстное меню, но строка не выбирается.

Так что, если p:contextMenu добавлено над таблицей, выбор не будет работать должным образом, что должно быть причиной, по которой руководство по миграции говорит "добавьте это ниже!".

Кстати: я не получил это предупреждение в моей консоли JavaScript во время моих тестов, не знаю почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...