我在数据表的列中有一个计数器。一旦计数器达到某个时间,我只需要更改该列的背景颜色。该表的数据正从数据库中提取。我正在使用a4j:poll来reRender列,但问题是整个表都被渲染了。下面是一些代码:
<a4j:region>
<h:form>
<a4j:poll id="poll" interval="1000" enabled="true" reRender="blink" limitToList="true" />
</h:form>
</a4j:region>
<h:form id="form1">
<a4j:outputPanel id="panel1" ajaxRendered="true">
<h:dataTable id="blinks" styleClass="tableClass" value="#{bean.list}" var="_item">
<h:column id="blink">
<f:facet name="header">
<h:outputText value="Header1" />
</f:facet>
<div id="div1" class="#{bean.check() ? 'red' :''}">
<h:outputText value="Counter text (counts seconds)" />
</h:column>
</h:dataTable>
</a4j:outputPanel>
</h:form>
答案 0 :(得分:1)
如果您满足以下最低要求&#39; JSF 2.0,EL 2.1和Servlet 2.5
您可以试用Ajax#updateColumn() by Omnifaces,有关于如何在展示中使用它的示例
请注意,Ajax#updateRow()和Ajax#updateColumn()只能更新 单元格内容包装在某个容器组件中时 固定ID。
答案 1 :(得分:0)
也许您可以使用推送服务器端事件来触发客户端更新,而不是使用执行完整表单的轮询。
http://livedemo.exadel.com/richfaces-demo/richfaces/push.jsf?tab=choices&cid=987178
完整说明如何使用此功能:Using RichFaces Push and DataTable Ajax Keys for Partial Tables Updates
答案 2 :(得分:0)
你应该按列id重新呈现,但是因为你有来自数据库的数据,并且它是一个列表,你能确认你可以做什么来调用哪个真实可以更新一列?