Ajax#updateColumn()不更新单元格

时间:2014-09-11 08:40:49

标签: jsf datatable omnifaces

我已将OmniFaces添加到我的Primefaces应用程序,主要是为了能够更新dataTable的单行。我在推送活动中调用Ajax.updateColumn(dataTable, 1),但没有任何更新。例如。我的一个细胞是这样的

<p:column style="width:40px;text-align: center;"
    toggleable="false" styleClass="smallPadding unmarkable">
    <f:facet name="header">
        <p:commandLink styleClass="ui-icon ui-icon-car"
            style="display: inline-flex;" id="carIcon" />
    </f:facet>
    <p:tooltip for="carIcon" value="Anzahl freie Fahrzeuge" />
    <h:outputText
        value="#{editLoad.getAmountOfUnusedOrderPositions(order)}" />
    <h:outputText value="/#{order.orderPositions.size()}" />
</p:column>

我已经调试过,#{editLoad.getAmountOfUnusedOrderPositions(order))}返回0,但更新后显示错误的值(8)。

1 个答案:

答案 0 :(得分:0)

来自the Ajax#updateColumn() javadoc

  

public static void updateColumn(UIData table, int index)

     

...

     

请注意,UIColumn的待更新直接子项必须是一个完整的JSF UI组件,它将一个具体的HTML元素呈现给输出,以便JS / ajax可以更新它。因此,如果你有设计限制,例如<h:panelGroup rendered="...">没有ID,那么你应该给它一个ID。这样它将呈现一个<span id="...">,可由JS / ajax更新。

您感兴趣的<h:outputText>没有id。给它一个。

<h:outputText id="amountOfUnusedOrderPositions"
    value="#{editLoad.getAmountOfUnusedOrderPositions(order)}" />