Comparacao jsf , mostrar imagem se valor maior

galera,

tava querendo fazer uma comparacao, tipo se o campo abaixob[/b] for maior que 20 ele exibi uma imagem na tela(coisa simples), mas nao consegui fazer a comparacao usando o if…



 <h:column>
                                            <f:facet name="header"><h:outputText value="Total"/></f:facet>
                                            <h:outputText value="#{itemProd.valorTotal}">
                                                <f:convertNumber type="currency"/>
                                            </h:outputText>
                                        </h:column>

alguem tem alguma dica?

#{itemProd.valorTotal > 20}

Usa o jboss El conforme descrito neste blog:
http://www.rponte.com.br/2008/10/23/estendendo-jsf-el-com-jboss-el/
Depois

# &lt;h:outputtext  rendered="#{itemProd.valorTotal &gt; 20}"&gt;  

galera, usei assim,

    <c:if test="#{itemProd.valorTotal >11}">
                                                <div class="promocao11">
                                                    <img src="teste.jpg" height="100" wifth="100"/>
                                                </div>
                                            </c:if>

mas apareceu nada

Vc ñ devia usar <c:if> quando programando em JSF. A melhor solução é:

<h:panelGroup styleClass="promocao50" rendered="#{itemProd.valorTotal >50}">
  <h:graphicImage name="teste.jpg" height="100" width="100" />
</h:panelGroup>

Lembrando q p/ name teste.jpg deve estar dentro de um diretório resources em WebContent senão use value.

o ideal mesmo seria fazer essa comparação no seu bean, e só chamar o metodo que retorne um boolean

public boolean isMaior() { return valorTotal>50; }

<h:panelGroup styleClass="promocao50" rendered="#{itemProd.maior}"> <h:graphicImage name="teste.jpg" height="100" width="100" /> </h:panelGroup>

galera,

fiz os testes com o codigo:

..
 <h:panelGroup styleClass="promocao11" rendered="#{itemProd.valorTotal >11}">
                                                                <h:graphicImage value="teste.jpg" />
                                                            </h:panelGroup>
...

nao mostra de jeito nenhum e fui olhar no fonte pelo navegador, nem aparece as linhas…

Ñ creio q essa ñ seja a melhor solução. Apenas pq vc tem uma comparação ñ significa q isso seja lógica da aplicação. View tb tem lógica de apresentação. É responsábilidade da view decidir se algum componente deve ou ser renderizado. Modularizar é extremamente importante, mas modularizar em excesso tb ñ é uma boa estratégia. Isso pode levar um código muito grande e ilegivel, difícil e caro de manter.

Acho que não tem jeito com de usar o sinal o operador de > com el nativa do JSF,
faz o que eu ti falei usar c:if sua xhtml fica muito poluído.

Mas o q vc está usando no <c:if> é a EL “nativa” do JSF (até pq ñ existe EL ñ nativa). Segundo a spec > é um operador válido da EL e se ñ está funcionando então o erro está em outro ponto. Vc tb pode substituir o > por gt se vc preferir.

fiz os testes com:

..
..
 <h:panelGroup styleClass="promocao11" rendered="#{itemProd.valorTotal >11}">
                                                                <h:graphicImage value="teste.jpg" />
                                                            </h:panelGroup>
...

e usando o jboss tambem como o exemplo do Daniel.F

Estranho que nao consigo ver o codigo na hora q mando mostrar o fonte no navegador(IE.FF.Chrome)…

ta dificil

Valeu pela força galera, consegui resolver deste modo:

..
 <h:outputText  rendered="#{novaclasseBean.pedido01.total > 11}">
                                                   <h:graphicImage url="teste.jpg"/>
                                                    </h:outputText>
..

brigadao a todos…

Ola Pessoal, Acho que voces podem me ajudar

Estou com um problema parecido com do Andre, a diferença seria que:

<h:outputText  rendered="#{aluno01.nota < 2 }">
...

Preciso fazer com que quando o valor for menor que 2 ele fique com 3.

brigadinha

<h:outputText  rendered="#{aluno01.nota < 2 ? 3 : aluno01.nota}">  

Se for menor q 2 ele mostra 3 e se for maior ou igual mostra o próprio valor.

Eu posso fazer duas condições numa linha só(tipo usando AND e OR)?

por exemplo:


<h:outputText  rendered="#{aluno01.nota < 2 ? 3 : aluno01.nota}">  

Só que se aluno01.nota menor que 2 E turma = 3

faça isso…

é possivel desta maneira?

obrigada pela orientação pessoal

Sim, você pode usar.

Sim voce pode usar ?

Nao entendi

Você quer colocar uma condição para exibir determinado valor ou quer esconder determinado componente?

Se quiser exibir:

//Se a nota do aluno for menor que 2 e a turma do aluno for igual a 3, será exibido 3, senão aluno01.nota.
&lt;h:outputText value="#{aluno01.nota &lt; 2 and aluno01.turma == 3 ? 3 : aluno01.nota}" /&gt;  

Se quiser esconder:

//Se a nota do aluno for menor que 2 e a turma do aluno for igual a 3 o componente será exibido. 
&lt;h:outputText value="Aqui é a mensagem que será exibida!" rendered="#{aluno01.nota &lt; 2 and aluno01.turma == 3}"&gt;

[quote=alves.Felipe]o ideal mesmo seria fazer essa comparação no seu bean, e só chamar o metodo que retorne um boolean

public boolean isMaior() { return valorTotal>50; }

<h:panelGroup styleClass="promocao50" rendered="#{itemProd.maior}"> <h:graphicImage name="teste.jpg" height="100" width="100" /> </h:panelGroup>[/quote]

Vlw mesmo me ajudou muito!