<h:form id="formId"> <p:wizard id="wizardId"> <p:tab id="tabId"> <p:dataTable id="tableId"> <p:column> <h:commandLink value="remove" update=""/> </p:column> </p:dataTable> </p:tab> </p:wizard> </h:form>
我只需要更新< p:dataTable>没有整个表格.
我尝试使用@ form,@ parent,:formId:wizardId:tabId:tableId,但它们都没有按我的意愿工作.当我使用@form时,它正在检查我不需要做的验证.
我怎样才能做到这一点?
首先,这确实不会与< h:commandLink>一起使用,因为它根本不支持更新属性.也许您实际上打算使用< p:commandLink>?
一旦你修复了< h:commandLink>作为< p:commandLink>,然后转到这个答案:How to find out client ID of component for ajax update/render? Cannot find component with expression “foo” referenced from “bar”以了解如何在JSF ajax中引用组件.
在阅读完该答案之后,您应该已经发现数据表位于以下特定代码段中:formId:tableId.所有,所有这些,以下应该做:
<p:commandLink value="remove" update=":formId:tableId" />
请注意,在PrimeFaces 3.3之前,< p:dataTable>的ajax更新中存在错误.在某些复杂的UI组合中.这是PrimeFaces 3.4中的fixed.如果您遇到这个问题并且无法升级到PrimeFaces 3.4,那么您需要将表格包装在某些< h:panelGroup id =“tablePanelId”>然后使用update =“:formId:tablePanelId”代替.