Não consigo passar atributo para uma página

6 respostas
dudaskank

E aí pessoal do guj

Estou com um problema pra passar dados de uma página para outra, usando o tomcat. Vejam, tenho este link aqui:

<p><a href="oi.jsp?nome=Eduardo">Oi direto</a></p>

E tenho esta página aqui:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>Oi</title>
</head>
<body>
<h1>Oi ${nome}</h1>
</body>
</html>

Ao clicar no link, só aparece "Oi", sem nada depois! Tentei passar por uma servlet mas deu o mesmo resultado, ela inclusive imprime null quando tento acessar o atributo. Criei o link e a classe:

<p><a href="Oi?nome=Eduardo">Oi passando pela servlet</a></p>
package com.dudaskank.estrategiaf1.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Oi extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		process(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		process(request, response);
	}

	protected void process(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		System.out.println(request.getAttribute("nome"));
		request.getRequestDispatcher("oi.jsp").forward(request, response);
	}
}

O que estou fazendo de errado?

Obrigado desde já...

6 Respostas

rmarin

Você já tentou pegar com request.getParameter(“nome”) ?

dudaskank

rmarin, deu certo!

coloquei isso na servlet:

request.setAttribute("nome", request.getParameter("nome"));

é assim mesmo que deve ser feito então? ou confundi alguma coisa?

flw

rmarin

Bom se ele passa pelo seu Servlet você pode fazer assim, é que estou muito acostumado ao uso do Struts, não sei se este é o melhor modo de fazer.

rmarin

Bom, provavelmente você não vai querer passar somente o nome para o JSP certo? O ideal é você preencher um Bean através dos dados que vieram de sua primeira jsp. Sei lá, preencher um Bean Usuario por exemplo, daí você seta no request o usuario inteiro, request.setAttribute(“usuario”, usuario); note que usuario na sua action deveria ser um objeto do tipo br.com.seila.Usuario, portanto na sua jsp você deveria fazer o Cast de Object para usuario:

br.com.seila.Usuario usuario = (br.com.seila.Usuario)request.getAttribute("usuario");

:stuck_out_tongue:

ldanielts

Oi, pessoal.

Só pra fechar,

request.getParameter(param) é diferente de request.getAttribute(param).

Enquanto o primeiro pega os parâmetros que foram postados pelo usuário (como por exemplo, na URL que você passou), o segundo pega os valores que foram setados explicitamente no request através de request.setAttribute(param, valorDoParam).

É por isso também que o objeto session só possui o método getAttribute.

Abraços.

dudaskank

Valeu rmarin, eu também prefiro passar o objeto assim para o request, é que esse era só um teste hehehe, mas muito obrigado pela ajuda

E valeu pela explicação também ldanielts, eu confundo os 2 sempre hehe

flw

Criado 26 de julho de 2006
Ultima resposta 26 de jul. de 2006
Respostas 6
Participantes 3