設置primefaces dataTable的源網段列的Cell可以編輯,當回車鍵保存時,判斷是否輸入的網段合法,如果不合法就顯示警告信息,并將這個不合法的數據用紅色表示。問題是,怎么給這一個cell設定樣式。通過給標簽設定ID然后在后臺代碼中找到這個組件設定樣式的時候就會讓這個列的所有cell都會顯示紅色。換一種思路,給ID設定值#{strategy.sName}企圖以每行數據的不會重復的名稱作為ID值,這樣后臺就會根據ID得到一個特定的cell,但是實踐表明,這個ID值時空的,頁面報錯不能將空的string作為ID值。同樣的通過給<p:dataTable>設定屬性rowIndexVar="rowIndex"然后讓id值為#{rowIndex}也會報空字符串。最后嘗試使用rowIndexVar="#{campusFirewallStrategyBean.rowIndex}",然后讓id="{campusFirewallStrategyBean.rowIndex}"同樣獲取的值是空的。
解決方法:
使用cellEdit代替rowEdit方法,因為cellEdit方法中事件對象可以獲取行索引。然后通過后臺調用JS的方式獲得特定cell進行樣式設置,如下圖。