Criar um IF com displayTag [RESOLVIDO]

Gente, tudo bem ??

Então, eu to usando o displayTag Lib pra exibir alguns dados vindos do banco. Até aí tudo bem!
O problema é que preciso criar um if para mudar a cor dos dados de uma coluna baseado no seja:

    <display:table name="achei" id="tabela">  
    <display:column property="dataPedido" title="Data do Pedido" style="width:90%;"/>  
         <display:column title="Estabelecimento" style="width:70%;">     
            ${tabela.estabelecimento.getNome()}    
         </display:column>  
         <display:column title="Forma de Pagamento" style="width:70%;">  
            ${tabela.formaPagamento.getNome()}    
         </display:column>  
    </display:table>  

nessa área do “tabela.estabelecimento.GetNome()” é trazido uma String baseada no id do estabelecimento.
o que eu quero é que dependendo de qual seja o id, a String mude de cor, algo como:

[i]if id == 1
estabelecimento.getNome() seja verde

if id == 2
estabelecimento.getNome() seja vermelho

else
estabelecimento.getNome() seja amarelo[/i]

eu tentei fazer aqui, mas o eclipse fica acusando que ta faltando
")", “}”, e ainda pede pra eu finalizar um try .
mas tudo isso ja está feito, tenho absoluta certeza.
Se alguém puder me dar alguma ajuda indicando o que poderia estar dando errado eu ficaria muito grato :slight_smile:

você pode colocar no decorator um div, um spam ,qualquer coisa do tipo e ai o conteudo, especificando um css desse div ou spam para a cor que vocÊ quer… da uma pesquisada nos decorators do displaytag.

Amigo, ja tentou usar as tags jstl? Acho que ficaria algo comog

&lt;c:if test="${tabela.estabelecimento.getId()} = '1"&gt;
    &lt;display:column title="Estabelecimento" style="width: 70%; color: #00FF00"&gt;  //Cor verde
        ${tabela.estabelecimento.getNome()}      
     &lt;/display:column&gt; 
&lt;/c:if&gt;

E depois repete o mesmo pros outros tipos de id e cores :slight_smile:

Abraços,

gente agradeço muito a ajuda…

mas eu tinha entendido as instruções de maneira errada. Ao que parece eu não tenho que mudar a cor da String, mas sim o background da linha inteira. Ou seja, se o id for 1, não é a string que ficará verde mas sim o background da linha inteira (incluindo assim as outras colunas).

Será que dá pra fazer isso com decorator do display tag lib??

Muda apenas o atributo background-color do style da linha em questão.

Da uma olhada ai no site do maujor, tem muita coisa sobre css lá: http://www.maujor.com

Obrigado Rique, mas eu ainda ntenho que fazer o if para que ele mude a cor dependendo do id.

to tentando usar o JSTL como você recomendou mas nao consigo achar os JARS pra baixar…e to meio confuso sobre como usar e tal =/

mas vlw mesmo pela ajuda

Para adicionar a jstl no projeto:
Baixe-as em: http://jstl.java.net/download.html

Depois apenas adicione no topo da sua pagina jsp assim:

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

Abraços.

Rique, obrigado pela ajuda mas não deu certo

baixei os arquivos corretamente e coloquei a linha como vc indicou. daí tentei fazer aquele teste que vc tinha passado pra ver se dava certo:

<c:if test="${tabela.statusPedido.getId()} = '1'">  
  	<display:column title="Status"style="width: 70%; color: #00FF00">
  		${tabela.statusPedido.getNome()}
	</display:column>
	</c:if> 

mas aparece o seguinte erro:

exception 

org.apache.jasper.JasperException: /moniTransacao.jsp (line: 73, column: 67) The JSP specification requires that an attribute name is preceded by whitespace
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
	org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:164)
	org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:153)
	org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1236)
	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
	org.apache.jasper.compiler.Parser.parseBody(Parser.java:1662)
	org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1002)
	org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1274)
	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
	org.apache.jasper.compiler.Parser.parseBody(Parser.java:1662)
	org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1002)
	org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1274)
	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
	org.apache.jasper.compiler.Parser.parse(Parser.java:138)
	org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239)
	org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:197)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:339)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.14 logs.


Dá um espaço no nome do atributo:
Seu código corrigido:

&lt;display:column title="Status" style="width: 70%; color: #00FF00"&gt;  

pois é…eu tinha percebido que era isso mesmo :stuck_out_tongue:

mas ainda sim o if não funciona. Não da nenhum erro, mas a coluna nao muda de cor. Na verdade a coluna nem é exibida, somente as outras.

Tenta assim:

&lt;c:if test="${tabela.estabelecimento.getId()} == 1"&gt;  

Também não funcionou =/

continua do mesmo jeito, nem a coluna aparece quando eu coloco esse if.

Cara me perdoa, to meio enrolado com a sintaxe, faz tempo que não uso, mas tenta assim:

&lt;c:if test="${tabela.estabelecimento.getId() == 1}"&gt;  

Deu CERTO !!! é assim mesmo!!

e imagina cara, vc ta fazendo o favor de tentar me ajudar, não tem que pedir desculpas =D
Muito Obrigado MESMO!! ja tava tentando isso desde ontem!! Muito Obrigado!!

Abraços

Se tu precisa tratar os valores desta coluna o if precisa estar dentro da column

<display:column title="Status"style="width: 70%; color: #00FF00">  
   <c:if test="${tabela.statusPedido.getId() == 1}">    
        ${tabela.statusPedido.getNome()}  
    </c:if>  
</display:column>  

Uma dica é usar o decorator.

http://demo.displaytag.org/displaytag-examples-1.2/example-rowclass.jsp