我有两种形式的两个数据表,forma 和 formg。每个表格里面都有一个 p:dataTable
、groupsa 和groupsg。在每个数据表中,都有一个自定义列显示名为 fava 和 favg 的图像( h:graphicImage
)。
单击图像时,将更新其他数据表中的图像。
<p:ajax event="click" listener="#{agent.toogleFavorite}"
update="fava, :formg:groupsg:favg" />
没有冒号,我得到一个异常(exception):
javax.faces.FacesException: Cannot find component with identifier "forma:agentsa:fava" referenced from "groupsg:0:favg".
formg:groupsg:favg 和 :formg:groupsg:favg 有什么区别?
我正在使用 JSF2.0 和 PrimeFaces 3.4。
最佳答案
:
前缀将使其成为绝对客户端 ID,因此将相对于 UIViewRoot
进行搜索。而不是最近的父级 NamingContainer
.当您想要引用不在同一个最接近的父级内的组件时,您应该(必须)使用它 NamingContainer
. <h:form>
和 <h:dataTable>
(和 <p:dataTable>
)是 NamingContainer
成分。
另见 How to find out client ID of component for ajax update/render? Cannot find component with expression "foo" referenced from "bar"详细说明。
关于java - 何时用冒号前缀表单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367597/