Usando jstl

11 respostas
N

Caros amigos, como sou iniciante en java venho tendo alguns problemas..
Um deles diz respeito a como exibir um collection no meu JSP.

Estou tentando aplicao o modelo MVC, sendo assim tenho 4 classes, 1- servlet que faz o papel de controler, 2-alunos é o meu java bean,3-connectionfactory que abri uma conexão com o bando de dados e 4- contatoDAO que inseri e lista alunos no meu banco de dados.

Tenho tambem alguns JSP's

Meu programa faz:
1. Deo acessar o JSP busca para que eu digite o nome de um aluno.
2. Ao clicar em buscar o controle é passado ao servlet que que faz o processamento e chama um outro jsp para emitir o resultado da busca.
3. O segundo JSP deveria exibir o resultado da busca

Infelizmente o item tres não acontece.

vejam o codigo do controler:
try{
String nome = request.getParameter("nome");
			ContatoDAO dao = new ContatoDAO();  
			Collection alunos = new ArrayList();
			request.setAttribute("alunos",dao.busca(nome));
                        try
			{
       		request.getRequestDispatcher("/exibir.jsp").forward(request, response);
			}
			catch(ServletException e)		
			{
			
			}
}
catch(SQLException e)
{
}

Sei que minha busca está correta pois quando eu tento escrever os resultados a partir do servlet ele escreve corretamente.

Depois que envio para exibir eu consigo ver quantos resultados eu obtive ma quando tento escrever no servlet o nome do aluno nada aparece.

vejam o meu jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

<html>
	<head>
		<title>Resultados obtidos</title>
	</head>
	
	<body>
	
		<c:out value="deu"/>
	
		<c:forEach var="alunos" items="${alunos}">

			<c:out value="${alunos.nome}" />
		
		</c:forEach>
</body>

</html>

Será que alguem pode me ajudar?
Já naum sei mais o que fazer...

11 Respostas

thiagoalgeri

Olá Nessinha,

troca no nome da sua var para “aluno” no seu forEach.

Ficaria assim.

<c:forEach var=“aluno” items="${alunos}">

<c:out value="${aluno.nome}" />

</c:forEach>

(acho q isso resolve)
Blzinha…
t+…

Pedrosa

Vc adicionou o jar do jstl no classpath da aplicação? e qual erro está causando?

N

thiagoalgeri -
Tentei fazer o que vc disse mas nada acontece…
Continua com o mesmo problema…
mas de qualquer maneira muito obrigada tah…

N

Pedrosa-
Eu coloquei o arquivo .jar do jstl na minha pasta common/lib do tomcat…
Eu preciso fazer algo a mais que isso?
Creio que naum seja esse o problema pois ao colocar o <c:out value=“deu”/> ele imprime normal…
na verdade naum dá um erro propriamnet dito, ele naum imprimi o aluno no jsp…

Ajudem-me please

thiagoalgeri

Provavelmente o seu dao.busca(nome) nao está retornando nada…
esta retornando uma collection vazia…

Verifica isso!!

N

Naum Thiago, ele está retornando sim...

para testar isso alterei o meu servlet para:
ublic class Servlett extends HttpServlet 
{
	//public static final long serialVersionUID = 1;
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
	{
			PrintWriter pw=response.getWriter();
			//pw.println("jhdsjg");
		try
		{
		

			String nome = request.getParameter("nome");
			ContatoDAO dao = new ContatoDAO();  
			Collection alunos = new ArrayList();
			alunos  = dao.busca(nome);
			//request.setAttribute("alunos",alunos);
			Iterator i=alunos.iterator();
			while(i.hasNext())
			{
				Alunos a=(Alunos) i.next();
				pw.println(a.getNome());
				pw.println(a.getMatricula());
			}

			/*try
			{

				request.getRequestDispatcher("/exibir.jsp").forward(request, response);
			}
			catch(ServletException e)		
			{
			
			}*/
		}
		catch(SQLException e)		
		{
		}
	}
}
Com esse codigo ele imprime o resultado da busca da forma que eu quero só que atraves do meu servlet e naum do jsp como eu gostaria...

O problema creio eu está no envio do collection do servlet para o jsp.OU no meu jsp..

Coloquei as taglibs.jar dentro da pasta common/lib do tomcat.. Só isso que eu preciso fazer ou preciso inclui-la em outro lugar?

N

Please, help me.
I don’t know what to do.
Snif snif

marcelo_mococa

creio q vc está usando a especificação 2.4 das servlets e que os jars standard e jstl estao no classpath.

tente alterar a declaração da taglib para isto:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

depois tente montar a lista assim:

<c:forEach var="aluno" items="${requestScope.alunos}">
    ${aluno.nome}
</c:forEach>

o requestScope só pra garantir q vc está pegando a lista que está na requisição.

tente aí…

fui…

N

Oi marcelo, tentei fazer o que vc me sugeriu mas nada ocorre…
No lugar de aparecer os dadso do meu collection aparece o ${aluno.nome} que eu escrevi…

Alguem tem mais alguma sugestão?

Creio que a inserção da taglib está correta pois usando o c:out u consigo escrever constantes… Mas naum variaveis…

Agradeço a ajuda…

Alisson_Nunes_da_Roc

Tem como pegar o tamanho da lista e imprimir no JSP, para poder tratar alguns dados…

<c:forEach var="ficha" items="${requestScope.fichas}">
            <hr>
            <strong>Obra:</strong>${requestScope.fichas.size} ${ficha.obra.objeto}<br>    
            <strong>Serviço:</strong> ${ficha.obraCompc.compc.nome}<br>
            <strong>Data:</strong> ${ficha.data}<br>
            <strong>Produção:</strong><fmt:formatNumber currencySymbol="" type="currency" value="${ficha.qtdeProd}"/><br>
            <strong>Localização:</strong>${ficha.local}<br>
            <strong>Situação:</strong>
            
            <br>
            <html:link href="DetalharPesquisaFDCC.do?cd=${ficha.cd}" >Detalhar</html:link>
            
        </c:forEach>

queria poder pegar o valor de fichas e imprmir no JSP… tem como saber isso? sou novo na linguagem ai, abraços galera!!!
${requestScope.fichas}

I

Voce tem que fazer a sua collection receber o resultado da sua consulta que vem do banco . Depois vc envia sua collection !!

Exemplo .:

Collection colecao = DAOConsultarTelefone();

request.setAttribute(“colecao”,colecao);

<html-el:select property="telefone"> <c:forEach var="colecao" items="${colecao}"> <html-el:option value="${colecao.telefone}"> <c:out value="${colecao.telefone}"/> </html-el:option> </c:forEach> </html-el:select>

Engraçado ta a mesma duvida em dois foruns !!! :lol:

Criado 12 de junho de 2006
Ultima resposta 14 de jun. de 2006
Respostas 11
Participantes 6