【发布时间】:2019-01-23 00:18:22
【问题描述】:
上下文
我正在开发一个非常旧的系统,该系统实际上已经分崩离析,而我的实际任务是修复它。
这个旧系统使用了我无法真正修改的旧库,因为它可能会修复系统的一小部分,但它只会使其余部分更加损坏。不过,我可能可以添加不会干扰旧库的新库。
我的问题
我想做的是根据rowStyleClass="#{searchTask.hasLinkedDecision(task) ? 'info' : ''}" 之类的服务器端条件在表的某些行上添加一个类,但我找不到任何解决方案,因为显然有几个名为 JSF 的库但没有其中是相同的,我的系统所依赖的似乎是唯一不支持动态行样式类的。
JSF 依赖项
<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>
有问题的代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
.....
<h:dataTable id="dttask"
binding="#{searchTask.taskTable.dataTable}"
value="#{searchTask.taskTable.dataList}" var="task"
styleClass="table table-striped table-hover">
<!--rowStyleClass="#{searchTask.hasLinkedDecision(task) ? 'info' : ''}"-->
<h:column>
<f:facet name="header">
<h:panelGroup>
.....
</h:panelGroup>
</f:facet>
<a href="${facesContext.externalContext.requestContextPath}/faces/pages/tasks/editing/add-tasks.xhtml?id=#{task.noTask}">
<h:outputText value="#{task.noTask}"/>
</a>
</h:column>
<h:column sortBy="">
<f:facet name="header">
<h:panelGroup>
<h:outputText value="No CT"/>
</h:panelGroup>
</f:facet>
<h:panelGroup rendered="#{not empty searchTask.getNoCT(task)}">
<div class="tooltipobjet" tabindex="0"
style="border-bottom: 1px dotted black;">
.....
</div>
</h:panelGroup>
</h:column>
<h:column>
<f:facet name="header">
<h:panelGroup>
<h:commandLink actionListener="#{searchTask.sortDataListTask}">
.....
</h:commandLink>
</h:panelGroup>
</f:facet>
<abbr title="#{searchTask.getTaskLabel(task.principal)}">
.....
</abbr>
</h:column>
<h:column>
<f:facet name="header">
<h:panelGroup>
<h:commandLink actionListener="#{searchTask.sortDataListTask}">
.....
</h:commandLink>
</h:panelGroup>
</f:facet>
<h:outputText value="#{searchTask.getLabelValueDomainSearch('domain.type.task', task.type)}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:panelGroup>
<h:commandLink actionListener="#{searchTask.sortDataListTask}">
.....
</h:commandLink>
</h:panelGroup>
</f:facet>
<div class="tooltipobject" tabindex="0"
style="border-bottom: 1px dotted black;">
.....
</div>
</h:column>
<h:column>
<f:facet name="header">
<h:panelGroup>
<h:commandLink actionListener="#{searchTask.sortDataListTask}">
.....
</h:commandLink>
</h:panelGroup>
</f:facet>
<h:outputText value="#{task.dateConform}">
<f:convertDateTime pattern="#{constants.DATE_TIME_FORMAT_CREATE_JOUR_HH_MM}"/>
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:panelGroup>
<h:commandLink
actionListener="#{searchTask.sortDataListTask}">
.....
</h:commandLink>
</h:panelGroup>
</f:facet>
<h:outputText value="#{searchTask.getAdminUnitAbbr(task.treatingAdminUnit)}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:panelGroup>
<h:commandLink actionListener="#{searchTask.sortDataListTask}">
.....
</h:commandLink>
</h:panelGroup>
</f:facet>
<h:outputText value="#{searchTask.getLabelValueDomainStatusByUser(task.status, task.statusEditDate)}"/>
</h:column>
</h:dataTable>
.....
</html>
【问题讨论】: