JSF F:阿贾克斯无法找到上下文组件 [英] JSF f:ajax cannot locate component on context

查看:127
本文介绍了JSF F:阿贾克斯无法找到上下文组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想更新从数据表内graphicImage的1数据表。我尝试了很多的F组合:AJAX渲染的价值,但没有成功,现在我使用的号码:PrimeFaces组件的功能,但我之前得到同样的错误。我在浏览器中收到以下错误:

I'm trying update one dataTable from a graphicImage inside the dataTable. I tried a lot of combination of f:ajax render value but without success, now I'm using p:component function of PrimeFaces, but I get the same error before. I receive this error in browser:

F:AJAX包含未知的IDj_idt690:painelTabelaAPDespesa - 无法找到它的成分j_idt735的背景下

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

在code我用刷新:

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

您如何看此F:AJAX是一种graphicImage的,这是一个数据表里面里面

how you can see this f:ajax is inside a graphicImage that's inside a data table.

<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的母公司)?

Probably this is caused because it don't know it is inside the component I want render, so how can I refresh this component (in this case the parent of dataTable)??

推荐答案

您可以在组件绑定到视图,并引用其<一个href="http://download.oracle.com/javaee/6/api/javax/faces/component/UIComponent.html#getClientId%28%29"相对=nofollow> UIComponent#getClientId()渲染来代替:

You could bind the component to the view and reference its UIComponent#getClientId() in the render instead:

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

这篇关于JSF F:阿贾克斯无法找到上下文组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆