Динамический цвет в каждом ряду в h: datatable - PullRequest
0 голосов
/ 23 января 2019

Контекст

Я работаю над очень старой системой, которая буквально разваливается, и моя реальная задача - исправить ее.

Эта старая система использует старые библиотеки, которые я не могудействительно изменить причину, может быть, это исправило бы небольшую часть системы, но оставило бы остальную часть гораздо более сломанной.Хотя я, вероятно, могу добавить новые библиотеки, которые не будут мешать старым.

Моя проблема

Что я хотел бы сделать, это добавить класс в определенные строки таблицыоснованный на условиях на стороне сервера, таких как rowStyleClass="#{searchTask.hasLinkedDecision(task) ? 'info' : ''}", но я не могу найти никакого решения, так как, очевидно, есть несколько библиотек с именем JSF, но ни одна из них не одинакова, и, похоже, единственная, от которой зависит моя система, неt поддерживают классы стилей динамических строк.

Зависимости 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>

1 Ответ

0 голосов
/ 23 января 2019

9 вещей ... один, но последний ваш ответ

  1. Этот вопрос, похоже, не связан с «стабилизацией» приложения, которое почти ломается, но является улучшением.
  2. JSF (Мохарра в вашем случае) 2.2.4 не , что старое .
  3. Не похоже, что вы используете jsp, но Facelets
  4. Невозможно воспроизвести в формате простого java-se sdk с классом с помощью метода main и без дополнительных библиотек, поэтому тег java в вопросе неверен.
  5. Не существует нескольких библиотек под названием JSF, есть API под названием JSF, который реализуется двумя реализациями. Mojarra и MyFaces, оба реализуют один и тот же API.
  6. Где вы видели rowStyleClass на h:datatable https://docs.oracle.com/javaee/7/javaserver-faces-2-2/vdldocs-facelets/h/dataTable.html
  7. Если вы получаете предупреждения об устаревании во время компиляции, это чаще всего означает, что вы используете некоторые более новые версии библиотек (менее старые), но вы по-прежнему используете старые методы из предыдущих версий.
  8. Ответ: Динамическое изменение цвета или стиля ячейки: datatable в JSF или с небольшим количеством кода условно установленные значения класса для ячеек h: datatable
  9. Этот является ответом для вашей версии библиотек. Если вы не хотите использовать это и не хотите «дублировать» столбцы кода IN (не столбцы ON), вы можете создать небольшой составной компонент
...