数据表-ContextMenu

时间:2019-04-10 14:37:15

标签: primefaces contextmenu

Primefaces迁移指南5.3至6.0:

  

ContextMenu:p:contextMenu必须现在放在xhtml中的目标组件(例如数据表)之后。

我完全尝试过,但是没有用。根本没有菜单。

ContextMenu之前放置dataTable:显示菜单。浏览器控制台上的其他输出:

  

ContextMenu定位尚不可用的小部件。请将contextMenu放在目标组件之后。 targetWidgetVar:widget_base_cars

我的Webshpere自由日志:

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

Java:

java.version = 1.8.0_102

精简到primefaces showcase

<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 个答案:

答案 0 :(得分:1)

我围绕PF 5.3 / 6.0 / 7.0复制了此测试。只要您无法选择p:dataTable,我就会与您在一起:

p:contextMenu添加到xhtml中的{strong>上方元素时,会在右键单击时显示。 在下面添加后,根本不会显示任何上下文菜单。但是tbh .:上下文菜单在不允许选择的数据表上有用吗?

在通过添加属性使其变为可选时

p:dataTable

它的行为如下:

    迁移指南建议在selection="#{myBean.selectedValue}" selectionMode="singel" 下方的
  • p:contextMenu上:在右键单击时,将选择被单击的行,并在其上显示上下文菜单。
  • p:dataTable上方的p:contextMenu:右键单击时,将显示上下文菜单,但未选择该行。

因此,如果在表上方添加了p:dataTable,则选择无法按预期进行,这一定是迁移指南告诉“在下面添加!”的原因。

顺便说一句:在测试期间,我没有在JavaScript控制台中收到该警告,不知道为什么。