【问题标题】:DataTable - ContextMenu数据表 - 上下文菜单
【发布时间】:2019-04-10 14:37:15
【问题描述】:

Primefaces 迁移指南 5.3 到 6.0:

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

我确实试过了,但它不起作用。根本没有菜单。

ContextMenu 放在dataTable 之前:正在显示菜单。浏览器控制台上的附加输出:

ContextMenu 以一个尚不可用的小部件为目标。请将 contextMenu 放在目标组件之后。 targetWidgetVar: widget_base_cars

我的 Webshpere Liberty 日志:

...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>

我希望菜单在右键单击时显示。

这是一个错误,还是我是一个错误?

【问题讨论】:

    标签: primefaces contextmenu


    【解决方案1】:

    我在 PF 5.3/6.0/7.0 中重现了这个测试。只要您的p:dataTable 不可选择,我就支持您:

    p:contextMenu 添加到 上方 xhtml 中的p:dataTable 元素时,会在右键单击时出现。添加下面时,根本不会出现上下文菜单。但是 tbh.: 上下文菜单对不允许选择的数据表有用吗?

    通过添加属性使其可选择时

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

    它的行为如下:

    • p:contextMenu 下面p:dataTable 迁移指南建议:在右键单击时,单击的行被选中并出现上下文菜单。
    • p:contextMenu 以上p:dataTable:右键单击时,也会出现上下文菜单,但未选择该行。

    因此,如果p:contextMenu 添加到表格上方,则选择不会按预期工作,这一定是迁移指南告诉“添加到下方!”的原因。

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

    【讨论】:

    • 非常有趣,谢谢!我对 contextMenu 的问题存在于更复杂的环境中,因此我将其剥离。也许太多了。我必须检查一下。顺便说一句:我在开发模式下运行示例。也许这就是我的 JS 控制台警告的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2012-09-09
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    相关资源
    最近更新 更多