Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态设置单元格/行样式JSF2.0_Jsf_Datatable - Fatal编程技术网

动态设置单元格/行样式JSF2.0

动态设置单元格/行样式JSF2.0,jsf,datatable,Jsf,Datatable,我使用的是一个h:datatable,它显示了用户在会话中输入的数据的摘要。表中的行可由用户自行删除。如果数据符合一定标准,表中的特定行必须为红色字体,否则应为黑色 到目前为止,我尝试过的方法有: -以编程方式将每个列值中h:outputtext组件的样式值设置为红色。但这会改变整个列的颜色。 -以编程方式设置行类,这将再次更改以前所有行的样式 我无法仅针对一行或一个单元格。我考虑过使用javascript,但是没有组件的id,我不知道如何获取元素 谢谢。使用行类属性 <h:dataTab

我使用的是一个h:datatable,它显示了用户在会话中输入的数据的摘要。表中的行可由用户自行删除。如果数据符合一定标准,表中的特定行必须为红色字体,否则应为黑色

到目前为止,我尝试过的方法有: -以编程方式将每个列值中h:outputtext组件的样式值设置为红色。但这会改变整个列的颜色。 -以编程方式设置行类,这将再次更改以前所有行的样式

我无法仅针对一行或一个单元格。我考虑过使用javascript,但是没有组件的id,我不知道如何获取元素


谢谢。

使用
行类
属性

<h:dataTable value="#{bean.items}" var="item" rowClasses="#{bean.rowClasses}">


getRowClasses()
必须返回一个逗号分隔的CSS类名字符串,该字符串将重复应用于行(更具体地说,
元素)。您可以基于bean(post)构造函数中的
项、操作方法和/甚至getter中的
项来创建它。

由于某种原因,StringBuffer被覆盖,这就是更改没有显示的原因。我采用了一种更简单的方法,向需要修改的行添加警报img。

BalusC,当用户单击按钮触发操作时,表行将异步添加。因此,加载视图时不会加载整个表。所以,用户输入数据,点击按钮,第一行被填充。用户再次输入数据并单击按钮,然后将第二行添加到表中,依此类推。通过使用RowClass,我必须为每一行添加一个row类,并确保在用户删除一行时删除这些RowClass。无论如何,我会尝试一下,看看它是如何工作的。您是使用JSF ajax来实现这个功能还是使用第三方JavaScript库/框架?那么,视图与模型是同步的,所以我不会看到问题。好吧,这就是我尝试的。在由添加行按钮触发的操作中,比如说“addRows”,我创建了一个StringBuffer。当数据满足/失败标准时,我将适当的样式类附加到StringBuffer和call表.setRowClasses(StringBuffer.toString())中。但是最近附加的styleclass会覆盖所有其他StyClass并使所有行具有相同的样式。我还应该提到,该按钮是一个a4j:commandButton,它使用render属性在单击时重新渲染表。