7
<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时,它正在检查我不需要做的验证。

我怎样才能做到这一点?

4

1 回答 1

9

首先,这确实不会与 a 一起使用<h:commandLink>,仅仅是因为它根本不支持该update属性。也许您实际上打算使用<p:commandLink>?

一旦你修复了<h:commandLink>a <p:commandLink>,然后前往这个答案:如何找出组件的客户端 ID 以进行 ajax 更新/渲染?找不到从“bar”引用的表达式“foo”的组件,以了解如何在 JSF ajax 中引用组件。

阅读该答案后,您应该发现数据表位于此特定代码片段中,由:formId:tableId. 因此,总而言之,应该执行以下操作:

<p:commandLink value="remove" update=":formId:tableId" />

请注意,在 PrimeFaces 3.3 之前,<p:dataTable>在某些复杂的 UI 组合中的 ajax 更新中存在一个错误。这在 PrimeFaces 3.4 中已修复。如果您确实遇到了这个问题并且无法升级到 PrimeFaces 3.4,那么您需要将表格包装在一些中<h:panelGroup id="tablePanelId">,然后使用update=":formId:tablePanelId"

于 2012-09-20T16:48:16.470 回答