Jsf 调用操作后从primefaces数据表更新单元格

Jsf 调用操作后从primefaces数据表更新单元格,jsf,primefaces,datatable,Jsf,Primefaces,Datatable,我想在单击primefaces数据表中的一行按钮后更新该行中的一列 我的jsf页面: <h:form id="visitForm"> <p:dataTable id="visitTable" var="visit" value="#{visitBean.findAllVisits()}" rows="2" paginator="true" lazy="true"> <p:column

我想在单击primefaces数据表中的一行按钮后更新该行中的一列

我的jsf页面:

<h:form id="visitForm">
        <p:dataTable id="visitTable" var="visit" value="#{visitBean.findAllVisits()}" rows="2"
                     paginator="true" lazy="true">
            <p:column headerText="#{msgs['clearance']}"
                      sortBy="#{visit.maritimeDeclarationOfHealth.clearance.status}" id="clearance">
                <p:commandButton value="#{msgs['clearance.ok']}"
                                 actionListener="#{visitBean.changeClearance(visit)}" global="false" update="clearance"/>
            </p:column>
    </p:dataTable/>
</h:form>
visitService将清除从OK更改为NOK,但我的datatables列没有更改。有什么想法吗

Primefaces 5.2


我已经看过了,但这似乎并没有解决问题。

我通过不更新列而是更新该列中的元素来修复它:

<p:column headerText="#{msgs['clearance']}">
  <p:outputPanel id="clearance">
     <p:commandButton value="#{msgs['clearance.ok']}" actionListener="#{visitBean.changeClearance(visit)}" 
      global="false" update="clearance"/>
  </p:outputPanel>
</p:column>


这不是“修复”,而是按原意去做正如您提到的:“但是我的datatables列没有改变。”您引用的是列id,而不是当时的内容。您在问题中发布的链接是关于更新关于完整数据表的内容。难怪它没有解决你的问题。你发布的链接是关于更新一个完整数据表的内容。难怪它没有解决您的问题;-)
<p:column headerText="#{msgs['clearance']}">
  <p:outputPanel id="clearance">
     <p:commandButton value="#{msgs['clearance.ok']}" actionListener="#{visitBean.changeClearance(visit)}" 
      global="false" update="clearance"/>
  </p:outputPanel>
</p:column>