如果没有附加的渲染器,则无法更新组件。组件类:"class org.primefaces.component.menuitem.UIMenuItem"



我的页面上有一个警告:

Can not update component without a attached renderer. Component class: "class org.primefaces.component.menuitem.UIMenuItem"

它运行得很好,但我仍然收到这个警告信息。我所拥有的是一个表,它应该根据所选行向用户显示上下文菜单,是否呈现一些菜单itens。

这是我的桌子:

<p:dataTable id="protocoloTable" var="protocolo" value="#{juridicaBean.protocolsLazy}" paginator="true" lazy="true" selectionMode="single"
            selection="#{protocoloBean.selectedEntity}">
            <p:ajax event="contextMenu" update=":registration_form:protocoloTableMenu" oncomplete="protoMenu.show(currentEvent);" process="protocoloTable" />

这是菜单:

<p:contextMenu id="protocoloTableMenu" for="protocoloTable" widgetVar="protoMenu">
    <p:menuitem value="Visualizar protocolo" icon="icon-ticket icon-large" actionListener="#{ocorrenciaBean.loadViewOcorrencias(protocoloBean.selectedEntity)}"
                process="@this" update="view_proto_details" oncomplete="PF('viewProtocolDlg').show()"></p:menuitem>
    <p:menuitem value="Nova ocorrência" icon="icon-plus icon-large" actionListener="#{ocorrenciaBean.newOcorrencia(protocoloBean.selectedEntity)}" oncomplete="PF('ocorrenciaDlg').show()" process="@this" update="ocorrencia_details" rendered="#{protocoloBean.selectedEntity.status eq 'PENDENTE'}"></p:menuitem>
    <p:menuitem value="Reabrir protocolo" icon="icon-unlock-alt icon-large" rendered="#{protocoloBean.selectedEntity.status eq 'CONCLUIDO'}"
                actionListener="#{protocoloBean.openProtocol()}" update="protocoloTable" process="@this"></p:menuitem>

PF4

我知道这个问题已经过时了,但我只是好奇你是否直接从代码中使用UIMenuItem?

  • 如果是,您是否尝试使用MenuModel - MenuItem(DefaultMenuModel/DynamicMenuModel-DefaultMenuItem)?

  • 此外,您还应该考虑为上下文菜单中使用的每个项目使用id

我在上收到了相同的错误消息

<div id="toggle-panel">
     <p:commandLink action="#{controller.toggle()}" process="@this" update="@parent">

更新不起作用。我不得不把<div>改成<p:outputPanel id ="...">。Primefaces在引用非Primefacers的标签时可能会遇到一些困难,因此您应该尝试在菜单周围添加一个p:outputPanel(带id)。

最新更新