JSF:dataTable. Tem como configurar a cor de cada linha?

Olá,

estamos desenvolvendo um sistema cuja camada de visualização é baseada em JavaServer Faces (1.1 ainda) e nos deparamos com o seguinte problema: temos uma tabela que lista alguns valores cuja cor do texto deverá variar de acordo com o estado de cada um dos itens listados.

Alguém aqui já precisou fazer algo semelhante? Em caso afirmativo, como procedeu?

Será que terei de abandonar o componente dataTable pra trabalhar em cima de forEach???

Toda sugestão é bem vinda, pois curiosamente não encontrei nada semelhante no Google ou em outros grupos de discussão.

Amigo nunca fiz isso aew nao , a unica coisa q consigo fazer e utilizar classes css para linhas e colunas, nao entendi bem o q vc quis dizer com mudança de estado de itens poderia definir melhor rsrsrsrsr

Bom, talvez eu não tenha me expressado direito.
Por mudança de estado dos beans, entenda o seguinte: a cada iteração do loop que gera o dataTable, o valor de um dos atributos do bean corrente (que está sendo impresso) pode variar, de linha pra linha.

No caso, o objetivo consistia em definir a cor da linha de acordo com o valor de um determinado atributo do bean em questão. Simples assim; :slight_smile:

Bem, depois de quebrar um pouco a cabeça, cheguei à solução que pretendo expor abaixo - na realidade, é bem simples, mas tem um certo mal cheiro, razão pela qual abri este tópico:

Primeiro especifiquei classes css para o status do bean em questão, tal como no exemplo abaixo:

  <style>
     .status1 {color: red;}
     .status2 {color: black;}
     .status3 {color: green;}
  </style>

Este exemplo pressupõe que o valor do atributo é numérico. Sendo assim, para tornar a coisa mais legível, coloquei um prefixo qualquer (“status” era o mais óbvio).

Em seguida, na hora de definir o meu dataTable, fiz o seguinte:

<h:dataTable value="#{beanFonte.conteudo}" var="bean">
   <h:column styleClass="status#{bean.status}">
      <h:outputText value="#{bean.qualquerCoisa}"/>
   </h:column>
   ...
   <h:column styleClass="#{beanFonte.conteudo}">
      <h:outputText value="Repeti o que fiz na primeira coluna com todas as demais"/>
   </h:column>
</h:dataTable>

Esta foi a solução que encontrei. A considero tosca porque tive de reptir o procedimento para cada coluna. O ideal no caso seria poder fazer isto por linha.
Espero ter deixado mais claro o que quis entender e que, esta solução, apesar de não ser a ideal, possa vir a ser útil para mais alguém aqui da comunidade.