我已将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)。
答案 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)}" />