EL - método com parâmetro

2 respostas
karluqs

Galera, pergunta meia boba, mas não consegui fazer funcionar, estou usando JSTL 2.0 no jsp tenho a seguinte taglib

<%@ taglib uri="/jstl-c" prefix="c" %>

no web.xml

<taglib>
      <taglib-uri>/jstl-c</taglib-uri>
      <taglib-location>/WEB-INF/c.tld</taglib-location>
   </taglib>

E a c.tld define o tag forEach usando EL, até ai belê, então eu fiz o seguinte código

<c:forEach items="${gerenciador.bancos}" var="bancos">
          <tr>
            <td><input type="checkbox" value="<c:out value="${bancos.codigo}" />" /></td> 
            <td><c:out value="${bancos.nome}" /></td>
            <td><c:out value="${bancos.formatoContaCorrente}" /></td>
            <td><c:out value="${bancos.formatoAgencia}" /></td>
          </tr>
        </c:forEach>

Ele funciona normal, “${gerenciador.bancos}” retorna um ArrayList, MAS (sempre tem um mas né), eu tenho no objeto gerenciador um método chamado com parâmetros ( gerenciador.getBancos(boolean Ordenar) ), eu gostaria de usar esse método, ao invés do getBancos porque esse sem parametro me traz sem ordenar nada, eu não posso usar <%=gerenciador.getBancos(true)%> no ForEach porque a tld com EL não permite isso, e se eu declaro uma variável antes do forEach

&lt;%ban = gerenciador.getBancos&#40;true&#41;;%&gt;
&lt;c&#58;forEach items="$&#123;ban&#125;" var="bancos"&gt;

Ele não faz o loop nos items. Tipo é a primeira vez que uso EL e não encontrei ainda como resolver, alguém tem uma dica, mantendo o padrão de uso EL mesmo com parametro no método…

obrigado,

2 Respostas

A

O trecho de código:

bean.getProperty&#40;param&#41;

Não pertence a especificação de JavaBeans.
E o EL só serve para JavaBeans.

O que você pode fazer é:

&lt;c&#58;set target="$&#123;bancos&#125;" property="bancoOrdenar" value="true"/&gt;
&lt;c&#58;out value="$&#123;bancos.Bancos&#125;"/&gt;
karluqs

Ok acabei resolvendo da seguinte forma, usando tag de iteração do Struts:

&lt;logic&#58;iterate collection="&lt;%=gerenciador.getBancos&#40;true&#41;%&gt;" id="bancos"&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;input type="checkbox" value="&lt;c&#58;out value="$&#123;bank.codigo&#125;" /&gt;" /&gt;&lt;/td&gt; 
            &lt;td&gt;&lt;c&#58;out value="$&#123;bancos.nome&#125;" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;c&#58;out value="$&#123;bancos.formatoContaCorrente&#125;" /&gt;&lt;/td&gt;
            &lt;td&gt;&lt;c&#58;out value="$&#123;bancos.formatoAgencia&#125;" /&gt;&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/logic&#58;iterate&gt;

Não fica tão elegante pois tem uma linha de código java, mas antes isso do que colocar um while {} gigante mesclando tags e código java :? . Se alguém tiver alguma outra idéia eu agradeço.

asouza_2000 valeu, mas eu não posso criar uma propriedade no meu objeto indicando que ele retornará ordenado, é uma instância que é usada por vários usuários, mas obrigado pela idéia. :slight_smile:

Criado 31 de agosto de 2004
Ultima resposta 1 de set. de 2004
Respostas 2
Participantes 2