Cij*_*ijo 6 ajax datatable primefaces jsf-2
<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>
Run Code Online (Sandbox Code Playgroud)
我只需更新<p:dataTable>
没有整个表单.我尝试使用@form
,@parent
,:formId:wizardId:tabId:tableId
,但没有人正在为我想.当我使用时@form
,它正在检查我不需要做的验证.
我怎样才能做到这一点?
首先,这确实永远不会与a一起工作<h:commandLink>
,仅仅因为它根本不支持该update
属性.也许你真的打算使用<p:commandLink>
?
一旦你修复了<h:commandLink>
a <p:commandLink>
,然后转到这个答案:如何找到ajax更新/渲染的组件的客户端ID?找不到从"bar"引用的表达式"foo"的组件,以了解如何在JSF ajax中引用组件.
在阅读完该答案后,您应该已经发现数据表位于此特定代码段中:formId:tableId
.所以,总而言之,以下应该做到:
<p:commandLink value="remove" update=":formId:tableId" />
Run Code Online (Sandbox Code Playgroud)
请注意,在PrimeFaces 3.3中,<p:dataTable>
在某些复杂UI组合的ajax更新中存在错误.这在PrimeFaces 3.4中得到修复.如果你遇到这个问题并且无法升级到PrimeFaces 3.4,那么你需要将表包装在一些中<h:panelGroup id="tablePanelId">
然后再使用update=":formId:tablePanelId"
.