JSF + Primefaces (If Else)

Bom dia…
como faço para montar um if else que irá alterar a ‘variavel_cor’ para uma cor especifica de acordo com o retorno do select…

<p:dataTable var="venda" value="${managerVendaDAO.listar}" paginator="true" rows="10">
            <p:column>
                  <f:facet name="header">
                  <h:outputText value="Nº Nota" />
                  </f:facet>
                  <h:outputText value="${venda.not_codigo}" style="color: variavel_cor;" />
            </p:column>
</p:dataTable>

vlws

qual seria a situação que causaria a alteração na cor?

Para If e Else o Melhor é JSTL, mas acho que você não tem necessidade aí.
Verificar direitinho.

Eu costumo usar algo assim:

<h:outputText value="${venda.not_codigo}" styleClass="${venda.estiloCSS}" />

E lá na classe Venda tem um atributo @Transient que tem um getter que retorna o estilo CSS de acordo com alguma condição.
Não sei se é a melhor maneira mas funciona.

Outro exemplo que uso bastante é colocar condições verdadeiro - falso assim, escolhendo o CSS de acordo com o resultado:

styleClass="#{(meuBean.modoEdit and empty meuBean.area.id ) ? 'editform' : 'editformRead'}"

fiz algo parecido com o que o jamirdeajr passou :

 <h:outputText value="${venda.not_codigo}" style="color: ${venda.not_status eq 'F' ? 'blue' : 'red'}" />

deu certo , só que eu consigo verificar só duas condições ao mesmo tempo, teria como testar se o status = ‘F’ ou status = ‘P’ ou status = ‘T’ ou outra coisa ao mesmo tempo? :slight_smile:

oberigado pela ajuda

tem sim, é só vc fazer com “or” ou “and”.

Não consegui utilizar os operadores ‘or’ e ‘and’ dentro da condição sabe o q pode ser?

‘or’ quer dizer ‘||’
e ‘and’ = ‘&&’

Ja havia tentado usar ele mais não funciona tb… Estou usando jsf 2.0…

style=“color: #{relatorio.status eq ‘Retrabalho’ ‘&&’ ‘Ajuste’ ? ‘red’ : ‘green’}”

n funcionou da erro de referência…

da uma olhada aqui

tem q substituir o ‘&’

No meu caso a condição e ‘or’ esse de substituir eu tinha testado e ate uso tem q ser usado && os 2 juntos sem as ‘’, agora o meu problema ta no or ou || q segundo minha condição toda vez que estiver com valor retrabalho ou ajuste tem q ficar vermelho…

Agradeço a atenção!

Veja se assim dá certo:

style="color: #{relatorio.status eq 'Retrabalho' || relatorio.status eq 'Ajuste' ? 'red' : 'green'}" 

Cara deu certinho muito obrigado :smiley: