2014-11-24 76 views
1

我在數據表的列中有一個計數器。一旦計數器達到特定時間,我只需要更改該列的背景顏色。該表的數據正在從數據庫中提取。我正在使用a4j:poll重新調用列,但問題是整個表格都被渲染。下面的一些代碼:如何更新jsf數據表只有

<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> 

回答

1

如果您滿足以下最低REQ」 JSF 2.0,EL 2.1和Servlet 2.5

你可以嘗試一下Ajax#updateColumn() by Omnifaces,對如何使用它的一個例子陳列櫃

注意的Ajax#updateRow()和Ajax#updateColumn()時,它已被包裹在一些容器組件與 固定ID只能更新 細胞含量。

+0

謝謝丹尼爾。之後我會嘗試更新。 – user3389171 2014-11-24 15:41:35

+0

丹尼爾,我能夠使用Omnifaces實現解決方案。謝謝你的建議。 – user3389171 2014-12-03 20:15:43

0

你應該重新被列ID渲染,而是因爲你有從數據庫來的數據,這是一個列表,你可以確認你可以做什麼來調用哪個實體可以更新一列?

+0

對不起,我無法理解你在問什麼。儘管如此,我已經找到了使用OmniFaces組件的解決方案。 – user3389171 2014-12-03 20:17:10