Boa noite pessoal, tudo bem?
Sou iniciante em JSF e estou enfrentando um problema para fazer condições em um XHTML.
O que eu quero fazer é o seguinte: Tenho uma tabela com valores vindos da base de dados e preciso que quando uma célula estiver com um certo valor ela seja pintada com uma certa cor. Estou tentando fazer isso da seguinte forma:
<ui:insert name="body_page">
<div class="monitoria_index">
<h:dataTable value="#{monitorias.cont_schdld_not_activated}" var="monitorBean"
class="order-table" headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row" border="0">
<f:facet name="header">Situação monitorias</f:facet>
<h:column>
<f:facet name="header">Monitoria</f:facet>
</h:column>
<h:column>
<f:facet name="header">OK</f:facet>
<c:if test="${monitorBean.count eq 0}">
<div style="text-align: center; background-color: #00FF00;">#{monitorBean.count}</div>
</c:if>
</h:column>
<h:column>
<f:facet name="header">WARNING</f:facet>
<c:if test="${monitorBean.count eq 1}">
<div style="text-align: center; background-color: #FFFF00;">#{monitorBean.count}</div>
</c:if>
</h:column>
<h:column>
<f:facet name="header">DANGER</f:facet>
<c:if test="${monitorBean.count eq 10}">
<div style="text-align: center; background-color: #FF0000;">#{monitorBean.count}</div>
</c:if>
</h:column>
</h:dataTable>
</div>
</ui:insert>
O problema é que, ao meu ver, ele não esta entrando em nenhuma condição do if, esta passando por todas e dessa forma não esta inserindo os dados na tabela.
Alguem sabe o que estou fazendo de errado?
Desde ja agradeço.
Bruno Henrique de Souza
[quote=Bruno.Henrique]Boa noite pessoal, tudo bem?
Sou iniciante em JSF e estou enfrentando um problema para fazer condições em um XHTML.
O que eu quero fazer é o seguinte: Tenho uma tabela com valores vindos da base de dados e preciso que quando uma célula estiver com um certo valor ela seja pintada com uma certa cor. Estou tentando fazer isso da seguinte forma:
<ui:insert name="body_page">
<div class="monitoria_index">
<h:dataTable value="#{monitorias.cont_schdld_not_activated}" var="monitorBean"
class="order-table" headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row" border="0">
<f:facet name="header">Situação monitorias</f:facet>
<h:column>
<f:facet name="header">Monitoria</f:facet>
</h:column>
<h:column>
<f:facet name="header">OK</f:facet>
<c:if test="${monitorBean.count eq 0}">
<div style="text-align: center; background-color: #00FF00;">#{monitorBean.count}</div>
</c:if>
</h:column>
<h:column>
<f:facet name="header">WARNING</f:facet>
<c:if test="${monitorBean.count eq 1}">
<div style="text-align: center; background-color: #FFFF00;">#{monitorBean.count}</div>
</c:if>
</h:column>
<h:column>
<f:facet name="header">DANGER</f:facet>
<c:if test="${monitorBean.count eq 10}">
<div style="text-align: center; background-color: #FF0000;">#{monitorBean.count}</div>
</c:if>
</h:column>
</h:dataTable>
</div>
</ui:insert>
O problema é que, ao meu ver, ele não esta entrando em nenhuma condição do if, esta passando por todas e dessa forma não esta inserindo os dados na tabela.
Alguem sabe o que estou fazendo de errado?
Desde ja agradeço.
Bruno Henrique de Souza[/quote]
vamos por partes
1º essa EL esta errada
${monitorBean.count eq 0}
deveria ser assim
#{monitorBean.count eq 0}
2º
vc pode fazer assim
<div style="text-align: center; background-color: #{monitorBean.count eq 0 ? '#00FF00' : '#FFFF00'};">#{monitorBean.count}</div>
uma outra forma é
vc criar um metodo no seu managedBean que faça a logica que vc precisa e retorna uma string com a cor que vc quer colocar no fundo
public String getCorStatus(){
if(count == 0){
return "#00FF00";
}
}
no xhtml
<div style="text-align: center; background-color: #{monitorBean.corStatus};">#{monitorBean.count}</div>
Bom dia DaniloAndrade , tudo bem?
Primeiramente, obrigado por me ajudar.
Acabei esquecendo de colocar uma detalhe quando descrevi o meu problema: eu tenho uma tabela que possui três colunas e será alimentada com uma lista vinda do meu bean. Quando o valor que eu receber do bean se referir a coluna WARNING, por exemplo, apenas essa célula deverá exibir o valor e ser pintada com a cor correspondente, ficando as outras células dessa linha sem nenhum valor e com a core padrão.
Essa sua solução pela colocando a condição direto na div chegou bem perto de resolver rss… mas uma coisa que eu queria entender, usando o <c:if test="#{monitorBean.count eq 1}"> …</c:if> não esta funcionando. Os valores estão vindo corretamento do bean (pelo menos quando fiz o debug na classe referente ao bean ele retorna o valor correto), mas quando utilizo a verificação dessa forma a tabela não é alimentada. Há algum atributo dessa tag ou algum conceito que estou aplicando ou estou aplicando errado?
Novamente agradeço pela ajuda.
Bruno Henrique de Souza