Problema bobo com pedidos

Gente, o negócio é o seguinte: estou tentando setar um atributo no pedido no servlet e usá-lo em um arquivo .jsp, mas não estou conseguindo. Como o código é muito grande, vou mostrar a parte que interessa:

//Servlet 

...
//Aqui eu faço uma procura em um banco de dados
...

			String saida;
			if (procura.resultado.size() != 0) { //Se retornou resultado
				saida = (String) procura.resultado.elementAt(0);

				for (int i = 1;i < procura.resultado.size();i++) {
					saida += "@" + procura.resultado.elementAt(i);
				}
				pedido.setAttribute("buscaResultado",saida);
			}

			despachante = getServletConfig().getServletContext().getRequestDispatcher("/busca.jsp");
			despachante.forward(pedido,resposta);
			return;
		}
...
mais codigo aqui
...

agora o jsp:

//JSP

...
codigos e codigos
....

String buscaResultado = (String) request.getAttribute( "buscaResultado" );
	System.out.println(buscaResultado);

....
codigo lalala
...

Quando testo, o jsp imprime null!
O que estou fazendo de errado? =(

request.getAttribute???

tente isso dentro do arquivo JSP

<%
  HttpSession sessao = request.getSession(true);
  out.println(sessao.getAttribute("buscaResultado")):
%>

Acredito que irá aparecer o resultado da sua sessão agora

Cara, mas no servlet eu não to adicionando aquele atributo na seção, e sim no pedido… isso vai funcionar?
vou tentar aqui…
uuhuh

request.getParameter("NomeDoAtributo");

Hmm… nao era pra ser getParameter? :slight_smile:

verdade… foi mal ae… eu vi setAttribute, getAttribute e já pensei que era Sessão. malz ae :cry:

depois de 2 semanas sem trabalhar, estou meio zonzo, hehehe

ai ai!
não acredito que seja só isso
EAHeuiaiEAuhEA
xo testar!
obrigado =)

Hmm… outro problema que costumo ter (inclusive, tá acontecendo agora) é que eu atualizo o arquivo .jsp, reinicio o tomcat, mas ele não o recompila; quando procuro o meu busca_jsp.java, ele continua igual o antigo, não quer mudar de jeito nenhum
como resolvo isso? =(

Isso pode ser problema de cache do browser!

Tenta apagar os .java e .class que o tomcat gera, dentro da pasta work-standalone-localhost-seucontextroot

Ja tive problemas semelhantes, algumas vezes era cache do browser outras problema do tomcat!

sim sim sim!
deletei o .java e o .class e funcionou
=)
muito obrigado!

Hmm… agora que consegui que compilasse, vi que ainda não deu certo… se é getParameter no request, qual o comando pra setar?
é setAttribute mesmo?

resumindo: no servlet eu to dando setAttribute no request e despachando pra um .jsp, e no jsp eu queria pegar essa variável que eu setei no servlet. Como faço?

Hm… agora eu to vendo aqui outras páginas dessa mesma aplicação que um cara aqui do serviço tinha feito, e tudo tá com request.getAttribute(“blabla”), e funcionando perfeitamente…

é ele que tem o toque divino ou eu que to fazendo alguma coisa a mais de errado?
=(

Cara alguma coisa ae esta errada no seu codigo.
Se voce faz um request.setAttribute(referencia,valor) na servlet no jsp é só recuperar request.getAttribute(referencia).
Ta estranho esse não funcionamento! Da uma olhada ae se em algum lugar do codigo voce nao mata oq tinha setado.

o getParameter só funciona qdo os parametros sao passados pela url.

…teste.jsp?param=teste

request.getParameter(“param”)

[quote=“Rodrigo.Decalque”]Gente, o negócio é o seguinte: estou tentando setar um atributo no pedido no servlet e usá-lo em um arquivo .jsp, mas não estou conseguindo. Como o código é muito grande, vou mostrar a parte que interessa:

//Servlet 

...
//Aqui eu faço uma procura em um banco de dados
...

			String saida;
			if (procura.resultado.size() != 0) { //Se retornou resultado
				saida = (String) procura.resultado.elementAt(0);

				for (int i = 1;i < procura.resultado.size();i++) {
					saida += "@" + procura.resultado.elementAt(i);
				}
				pedido.setAttribute("buscaResultado",saida);
			}

			despachante = getServletConfig().getServletContext().getRequestDispatcher("/busca.jsp");
			despachante.forward(pedido,resposta);
			return;
		}
...
mais codigo aqui
...

agora o jsp:

//JSP

...
codigos e codigos
....

String buscaResultado = (String) request.getAttribute( "buscaResultado" );
	System.out.println(buscaResultado);

....
codigo lalala
...

Quando testo, o jsp imprime null!
O que estou fazendo de errado? =([/quote]

esse atributo “pedido” é o mesmo request que o construtor do doXXX(request,response) da servlet recebe ???

Sim, só que ao invés de botar o nome em inglês, nós botamos em portugues =)
Não sei porque, mas milagrosamente deu certo, eu tinha mudado um tanto de coisa (como o getParameter e tudo), e, quando voltei pro que tava, deu certo, uhuhuh, melhor assim =D

A última dúvida agora: na hora de setar o atributo, eu só posso passar como valor uma String ou posso passar um objeto qualquer, pra depois recuperá-lo com getAttribute?

Exemplo:


//Imaginem que fiz uma classe chamada Abacaxi

Abacaxi a = new Abacaxi(folhas,fruta,semente);
request.setAttribute("abacaxi",a);

e aí, na hora de pegar:


Abacaxi b = (Abacaxi) request.getAttribute("abacaxi");

isso dá certo? =D

Correto.
Qualquer tipo, basta fazer um cast ao recuperar!

funciona então?
que legal!
uhuh
obrigado, vou ver se agora dá tudo certo aqui
=)

muito obrigado mesmo! =D

Disponha.
Você está no GUJ! :wink: