h:datatable中每一行的动态颜色

时间:2019-01-23 00:18:22

标签: jsf xhtml mojarra

上下文

我正在使用一个非常老旧的系统,实际上它已经崩溃了,我的实际任务是修复它。

此旧系统使用的旧库我无法真正修改,原因是它可能会修复系统的一小部分,但只会使其余部分变得更糟。不过,我可能可以添加不会干扰旧库的新库。

我的问题

我想做的就是根据服务器端条件(例如Copy)在表的某些行上添加一个类,但是我找不到任何解决方案,因为显然有几个名为JSF的库但它们都不相同,而且我的系统所依赖的似乎是唯一不支持动态行样式类的人。

JSF依赖项

rowStyleClass="#{searchTask.hasLinkedDecision(task) ? 'info' : ''}"

问题代码

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>2.2.4</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.2.4</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

1 个答案:

答案 0 :(得分:1)

9件事...最后一个是你的答案

  1. 这个问题似乎与“稳定”几乎崩溃但有改进的应用程序无关。
  2. JSF(在您的情况下为Mojarra)2.2.4不是那么老
  3. 您似乎不是在使用jsp,而是使用facelets
  4. 您无法使用带有main方法且没有其他库的类在纯java-se sdk中进行复制,因此问题上的java标记不正确。
  5. 没有几个称为JSF的库,有一个称为JSF的api,它由两个实现实现。 Mojarra和MyFaces都实现了相同的api。
  6. rowStyleClass https://docs.oracle.com/javaee/7/javaserver-faces-2-2/vdldocs-facelets/h/dataTable.html上您在哪里看到h:datatable
  7. 如果您在编译时收到过时警告,则通常表示您确实使用了某些较新版本的库(较少的旧版本),但是仍使用以前版本中的旧方法。
  8. 答案在Changing h:datatable cell color or style dynamically in JSF中或包含更多代码conditionally set class values for h:datatable cells
  9. 您的库版本的答案。如果您不想使用此功能,并且不想“复制” IN列中的代码(非ON列),则可以创建一个小的复合组件