Problema bobo com pedidos

18 respostas
R

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? =(

18 Respostas

Jair_Rillo_Junior

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
R

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

E
request.getParameter("NomeDoAtributo");
cv1

Hmm… nao era pra ser getParameter? :slight_smile:

Jair_Rillo_Junior

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

R

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

R

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? =(

thiagorani

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!

R

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

R

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?

R

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?
=(

thiagorani

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.

thiagorani

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

…teste.jsp?param=teste

request.getParameter(“param”)

thiagorani

“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? =(

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

R

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

thiagorani

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

R

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

muito obrigado mesmo! =D

thiagorani

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

Criado 5 de janeiro de 2004
Ultima resposta 7 de jan. de 2004
Respostas 18
Participantes 5