我想从dataTable里面的graphicImage更新一个dataTable。我尝试了很多f:ajax渲染值的组合,但没有成功,现在我使用PrimeFaces的p:component函数,但是之前我得到了同样的错误。我收到此错误的浏览器:JSF f:ajax无法找到上下文的组件
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的母公司)?
再次感谢BalusC。第一种方法没有重做任何东西,但第二种方法解决了我的问题。 – brevleq
不客气。我从答案中删除了第一种方法。 – BalusC
男人,这里同样的问题,确实对我来说非常不直观。像魅力一样工作! – RMalke