JSF f:ajax 无法在上下文中定位组件
我正在尝试从数据表内的图形图像更新一个数据表。我尝试了很多 f:ajax 渲染值的组合但没有成功,现在我使用 PrimeFaces 的 p:component 函数,但我之前遇到了同样的错误。我在浏览器中收到此错误:
f:ajax 包含未知 ID 'j_idt690:painelTabelaAPDespesa' - 无法在组件 j_idt735 的上下文中找到它
f:ajax 包含未知 id 'j_idt690:painelTabelaAPDespesa' - 无法在我用来刷新的代码
<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 的父组件)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将组件绑定到视图并引用其 render 中改为“nofollow">
UIComponent#getClientId()
:You could bind the component to the view and reference its
UIComponent#getClientId()
in therender
instead:PrimeFaces
组件具有更智能的上下文无关组件定位算法。你可以尝试用它来代替。The PrimeFaces
<p:ajax>
component has a bit more smart context-independent component locating algorithm. You could try using it instead.