如何在dataTable中引用dataTable父级?

考虑一个虚拟案例:

           

在按钮单击时, id=rowsContainer成功更新。

但是,如果我添加ui:repeat在那里ui:repeat ,它就不再起作用了:

              

相反,这得到:

  contains an unknown id ':wrapperForm:blocksRepeat:0:rowsWrapper' - cannot locate it in the context of the component j_idt363 

但是,该组件确实存在该ID,因此EL应该没问题。 不知怎的, ui:repeat打破了这个案子。 是否可能在实际循环之前尝试评估EL?

你如何从dataTable中引用rowsWrapper元素?

注意:我最近在ui:repeat中询问了奇怪的dataTable命名 , 结果certificate这是一个错误 。 但是,这个问题与此无关,因为我将dataTable包装在panelGroup中,如此处所示 。

实际上有两件事出了问题:

1)ui:重复被打破

正如BalusC在该问题的评论中所回答的那样,由于Mojarra中的一个错误 ,第一个问题(再一次)发生了 。 似乎ui:repeat是如此破碎,即使包装容器持有h:dataTable也无济于事。 有关更多详细信息,请参阅问题“ 为什么不在hi中的h:dataTable:重复获取正确的ID? ”以及此问题的注释。

正如BalusC所建议的,解决方法是使用h:dataTable而不是ui:repeat 。 它将提供不方便的(

)HTML但有效。 在向内部迭代添加行或从内部迭代中删除行时,这会消除一些奇怪的问题。

注意:关于ui:repeat一些问题似乎在Mojarra 2.0.3中得到修复,但并非全部。

2)引用失败了

即使使用h:dataTable解决方法,内部按钮对内部h:dataTable的引用也会失败。 由于没有ui:repeat使用,这必须是数据表的内部问题。 我目前没有看到任何解决方案,所以我也为此行为提交了一张票 。