JSTL e Collections

6 respostas
Rafael_Afonso

Olá:

Estou começando a usar a JSLT. Fiz uma página JSP da seguinte forma:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
    <body>
<%
        java.util.Collection lista = new java.util.ArrayList();
        lista.add("Um");
        lista.add("Dois");
        lista.add("teste");
%>
        <table border="1">
            <c:forEach items="${lista}" var="${palavra}" >
                <tr>
                    <td>
                        <c:out value="${palavra}"/>
                    </td>
                </tr>
            </c:forEach>
        </table>
    </body>
</html>

Quando vou acessar a página, não aparece nada. Já tentei por “pageContext” antes de “lista” e de “palavra”. Entretanto, o Tomcat devolveu uma exceção.
O que devo fazer para que minha coleção apareça?

Grato,

6 Respostas

urubatan

use a tag jsp:useBean para criar o bean lista :slight_smile:

isto deve resolver o seu problema :slight_smile:

Rafael_Afonso

Urubatan:

Usei a tag como você sugeriu. O código ficou assim:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
    <body>
        <jsp:useBean id="lista" class="java.util.ArrayList">
<%
        lista.add("Um");
        lista.add("Dois");
        lista.add("teste");
%>
        </jsp:useBean>
        <table border="1">
            <c:forEach items="${lista}" var="${palavra}" >
                <tr>
                    <td>
                        <c:out value="${palavra}"/>
                    </td>
                </tr>
            </c:forEach>
        </table>
    </body>
</html>

Agora é impressa uma tabela com sua respectivas linha e coluna… mas sem dados! :? E agora?

Grato,

urubatan

não usei a JSTL até hoje, mas acho que a sintaxe deve ser o seguinte (nao tenho o tomcat na maquina que estou usando agora para testar :slight_smile:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
    <body>
        <jsp:useBean id="lista" class="java.util.ArrayList">
<%
        lista.add("Um");
        lista.add("Dois");
        lista.add("teste");
%>
        </jsp:useBean>
        <table border="1">
            <c:forEach items="${lista}" var="palavra" >
                <tr>
                    <td>
                        <c:out value="${palavra}"/>
                    </td>
                </tr>
            </c:forEach>
        </table>
    </body>
</html>

imagino que em var, você deve especificar o nome da variavel que o for deve criar :slight_smile:

ve se funciona ai e avisa para nois :slight_smile:

Rafael_Afonso

Urubatan:

Você está absolutamente certo! :smiley: A tabela foi criada com seus respectivos dados.

Obrigado,

E

Deixa eu ressuscitar este tópico… pois estou quebrando a cabeça e de repente alguém já passou por isso. Deve ser uma coisa bem simples que eu estou esquecendo…

Eu executo este exemplo que está no tópico, e ele me apresenta como resultado, em vez da lista: ${palavra}

A proposito estou usando o Tomcat 5.0.19 e JSTL 1.1 que baixei do jakarta. Coloquei os jars do JSTL no diretorio lib da aplicação, os arquivos tld no WEB-INF e inclui no web.xml as linhas:

<taglib>
		<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
		<taglib-location>/WEB-INF/fmt.tld</taglib-location>
	</taglib>

	<taglib>
		<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
		<taglib-location>/WEB-INF/c.tld</taglib-location>
	</taglib>

	<taglib>
		<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
		<taglib-location>/WEB-INF/sql.tld</taglib-location>
	</taglib>

	<taglib>
		<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
		<taglib-location>/WEB-INF/x.tld</taglib-location>
	</taglib>

No log do tomcat não aparece nenhum erro…

Desde já agradeço!

E

Não querendo ser chato, mas já sendo… alguém já passou por isso que descrevi na última mensagem?

O mais estranho é que os exemplos que vem junto com o jakarta funcionam beleza… e este mesmo exemplo chegou a funcionar uma vez…

Criado 6 de fevereiro de 2003
Ultima resposta 1 de jun. de 2004
Respostas 6
Participantes 3