ajax - JSF f :ajax cannot locate component on context

标签 ajax jsf jsf-2 datatable primefaces

我正在尝试从数据表中的图形图像更新一个数据表。我尝试了很多 f:ajax 渲染值的组合但没有成功,现在我正在使用 PrimeFaces 的 p:component 函数,但我之前得到了同样的错误。我在浏览器中收到此错误:

f:ajax contains an unknown id 'j_idt690:painelTabelaAPDespesa' - cannot locate it in the context of the component j_idt735

我用来刷新的代码:

<f:ajax event="click" render="#{p:component('painelTabelaAPDespesa')}"
                    listener="#{itensAPDespesa.removerItem(item)}" />

如何查看此 f:ajax 位于数据表内的图形图像中。

<h:panelGroup id="painelTabelaAPDespesa">
        <p:dataTable id="tabelaAPDespesa" value="#{itensAPDespesa.itens}"
            var="item">
            <p:column>
                #{itensAPDespesa.itens.indexOf(item)+1}
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Número" />
                </f:facet>
                <hrgi:editableText style="width:33%"
                    value="#{item.numeroDocumento}" />
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Vencimento" />
                </f:facet>
                <hrgi:editableDate style="width:33%" value="#{item.dataVencimento}" />
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Valor" />
                </f:facet>
                <hrgi:editableCurrency style="width:33%" value="#{item.valor}">
                    <f:ajax render="@form" event="blur"
                        listener="#{itensAPDespesa.adicionarItem(item)}"
                        onevent="mudarFocoParaCampoInexistente(this.id)" />
                </hrgi:editableCurrency>
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Remover" />
                </f:facet>
                <h:graphicImage library="img" name="default_trash.png"
                    style="cursor:pointer;">
                    <f:ajax event="click" render="#{p:component('painelTabelaAPDespesa')}"
                        listener="#{itensAPDespesa.removerItem(item)}" />
                </h:graphicImage>
            </p:column>
        </p:dataTable>
        <h:outputLabel
            value="Total: #{modeloPopupRegistroDespesa.valorTotal}">
            <f:convertNumber type="currency" currencyCode="BRL"
                currencySymbol="R$" maxFractionDigits="2" minFractionDigits="2" />
        </h:outputLabel>
    </h:panelGroup>

这可能是因为它不知道它在我要渲染的组件内部,所以我该如何刷新这个组件(在本例中是 dataTable 的父组件)?

最佳答案

您可以将组件绑定(bind)到 View 并引用其 UIComponent#getClientId()render 中改为:

<h:panelGroup id="painelTabelaAPDespesa" binding="#{painel}">
    <p:dataTable id="tabelaAPDespesa" value="#{itensAPDespesa.itens}" var="item">
        ...
        <f:ajax render=":#{painel.clientId}" ... />
        ...
    </p:dataTable>
</h:panelGroup>

关于ajax - JSF f :ajax cannot locate component on context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666631/

相关文章:

jsf-2 - Primefaces 数据表卡住列未对齐

javascript - 同一页面上的两个 JQuery Ajax 调用

javascript - Rails - 通过ajax提交表单后页面未加载

jsf - 是什么使 Bean 成为 CDI Bean?

jsf - 在 JSF 2.3 中通知用户 session 结束

jsf - 使用 EL 变量为标签动态分配 ID

java - 从 AJAX Servlet 生成 Portlet URL

php - 搜索结果页面具有相同字段 ID 名称时的 Ajax 函数

validation - 如何让验证取决于按下的按钮?

css - 用自定义的覆盖 primefaces css