p:ajax更新不存在的ID

4

我正在使用PrimeFaces,有一行代码如下:

<p:ajax update="toUpdate">

问题在于,这个ID并不总是存在于页面上。 (页面是动态的,有时它包含具有此特定ID的部分,有时则没有) 当它存在时,它运行得很好,但当ID不存在时,组件会崩溃 - (可能是某些验证问题) 我该如何修复它? 这是一个众所周知的问题吗? 谢谢!

你是什么意思 ID不存在 - Youcef LAIDANI
你能解释一下 ID 是动态的,不总是存在 吗? - Youcef LAIDANI
嗯,你能分享一些代码吗?这还不太清楚:( - Youcef LAIDANI
3
如果所引用的组件也未呈现,为什么不考虑不渲染p:ajax组件... - Kukeltje
尝试更新元素的父级,以避免在某些情况下引用不存在的元素(需要到达“静态”父级)。 - ziMtyth
显示剩余2条评论
2个回答

2
您需要提供一个始终呈现的组件以进行更新,例如:
<p:ajax update="toUpdate">

<h:panelGroup id="toUpdate">

    <p:dataTable id="tableID" rendered="#{bean.someCondition>"...

</h:panelGroup>

所以,如果您有一个可以是可见或不可见的组件,请勿将其用于更新,因为可能已经超出了组件树。相反,使用一个组件(容器),确保它被渲染并存在于组件树中。

0

试试这段代码

 <f:ajax render="toUpdate">

    <h:outputText id="toUpdate">

      <!--  do something -->

    </h:outputText>

1
你的答案几乎与另一个答案相同,但你想将东西(组件?)嵌套在h:outputText中。这不是一个好建议。 - Kukeltje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接