我有一个jsf 2.0页面,其中有< p:dataTable>在此表中的< p:commandButton>应该用ajax请求从该表中删除一个项目.删除本身可以正常工作,但是我不知道如何识别周围的< p:dataTable>用于渲染更新.
<lots of naming containers>
...
<p:dataTable id="dataTable" var="userItem" ... />
<p:column>
<p:commandButton
action="#{userController.doDelete(userItem.id)}"
value="delete"
update="?????"/> <!-- How to address the dateTable? -->
</p:column>
</p:dataTable>
<.lots of naming containers>
我已经尝试过update =“ dataTable”,但是mojarra找不到它
(编辑:由于其他原因它没有起作用)
所以我的问题是如何解决周围的命名容器,而无需使用从根UIComponent开始的绝对路径(因为那样我需要命名很多命名容器.)
最佳答案
假设您具有以prependId =“ false”作为属性的表单中的所有内容,那么dataTable的update属性值应该起作用.
子组件的PrimeFaces更新属性可识别父dataTable组件的ID.此外,您还可以在PrimeFaces更新中使用@parent值来重新呈现子元素的直接父容器.