2014-09-11 56 views
1

我已将OmniFaces添加到我的Primefaces应用程序中,主要是为了能够更新数据表的单个行。我在推送事件上致电Ajax.updateColumn(dataTable, 1),但没有更新。例如。我的细胞之一是这样的Ajax#updateColumn()不更新单元格

<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(顺序))}返回0,但更新后显示错误的值(8)。

回答

0

the Ajax#updateColumn() javadoc

public static void updateColumn(UIData table, int index)

...

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

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

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

感谢BalusC,这解决了我的问题。 – user3172567 2014-09-11 11:01:42

+0

不客气。 – BalusC 2014-09-11 11:10:42