当前位置: 首页 > 面试题库 >

JSF f:ajax无法在上下文中找到组件

子车才捷
2023-03-14
问题内容

我正在尝试从dataTable内部的graphicImage更新一个dataTable。我尝试了很多f:ajax渲染值的组合,但是都没有成功,现在我使用的是PrimeFaces的p:component函数,但是之前遇到了相同的错误。我在浏览器中收到此错误:

f:ajax包含未知ID’j_idt690:painelTabelaAPDespesa’-无法在组件j_idt735的上下文中找到它

我用来刷新的代码:

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

您如何看到此f:ajax位于数据表中的graphicImage中。

<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的父对象)?


问题答案:

您可以将组件绑定到视图,然后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>


 类似资料:
  • 我已经处理这个问题有一段时间了,并查看了我能找到的所有相关问题,例如:这个问题,这个问题和这个问题。你能帮我纠正这个错误吗?这是唯一一个被圆木扔出去的。 相关代码: radio.java 无线电活动。xml

  • 我尝试使用 Websphere 8.5 完整配置文件将应用程序转换为 Liberty 配置文件,但我遇到了有关不兼容的问题。 无法找到初始上下文工厂 我知道班级的位置com.ibm.ws.ejb.thinclient_8.0.0.jar在完整的配置文件中,但我不能在Liberty配置文件中找到相关的,还有一件事,因为我正在做维护应用程序,所以班级要看看。 com . IBM . WebSphere

  • 问题内容: 我从阅读了以下文档,但它说,但是当我将index.html文件放在 字符串下时,才呈现出来。目前在下,我 正在使用。 MvcConfiguration Restful Service for index page 在我的IDE控制台上,我确实看到了 从打印的内容 ,并且在Chrome开发工具中的网络下面看到了该内容,但我只能 看到。 index.html 问题答案: Spring Bo

  • 在我的程序中,src目录下列出了三个文件夹:文件、声音、图像。我不知道为什么我的代码没有被检测到。当我运行这个程序时,我收到了这样一条消息:“java.io.FileNotFoundException:files\7.txt(系统找不到指定的路径)”。我有图片附在这里。请帮忙。 下面是我的代码: 关于文件File=新文件(resource.toURI());以下是我尝试过但仍然无效的内容: 下面是

  • 问题内容: 我处理这个问题已有一段时间了,研究了我可以找到的所有相关问题,例如:这个,这个和这个。您能帮我解决这个错误吗?这是logcat抛出的唯一一个。 相关代码: radio.java activity_radio.xml 问题答案: 定义在您需要定义它特定视图方式在这里你不能在该方法两个参数。 您的错误还表示 无法找到方法playPauseMusic(View) 意味着编译器需要 带有单个参

  • 问题内容: 该设置用于构建和部署到Adobe AEM。 主构建作业从git存储库中提取,构建和打包,运行测试,然后触发应使用上游作业中已构建软件包的下游作业。 问题是下游作业失败并显示以下消息: 在我看来,由下游作业触发的某种方式的CopyArtifacts插件正在寻找错误位置的工件。正确的位置是 但是然后,它抱怨 下游作业从另一个项目复制工件,然后该生成是“触发此作业的上游生成”或“从最新完成的