Serlvet response.sendRedirect()

12 respostas
D

Galera,
Ve se alguém me dá uma ajuda, estou trabalhando com jsp submetendo ação a um servlet, o servlet executa e dependendo do resultado faz um response.sendRedirect(caminho);
Tudo tranquilo até ai né?
em toda a minha aplicação isso tá funcionando, mas em um certo local quando faço isso, ele não redireciona para o caminho que especifiquei, alguém sabe o porque disso?
Na minha servlet tenho um método que se chama controle com a assinatura:

public boolean controle(HttpServletRequest req, HttpServletResponse resp)
e dentro deste metodo tenho o response assim:

resp.sendRedirect(req.getContextPath()+"/action/listagemUsuarioLotacao.fbb?codigoLotacao="+(req.getParameter("codigoLotacao")))

12 Respostas

V

dá algum erro?

ele direciona pra outro lugar?

tem um detalhe do sendRedirect que se vc já tiver escrito qq coisa na saída ele não faz o redirecionamento…

D

não redireciona para nenhuma pagina, submete-se a mesma pagina que faz o post. Logo, como não tenho valores após o redirect me dá alguns erros, pois nao os tratos.
Na verdade não está me redirecionando para onde eu quero.

Como assim?

R

Cara, tu ja debugou pra saber qual a url que ele ta passando como parametro???

se funciona em todo lugar menos numa situação…

sera que não é o parametro que ta errado???

[]'s

M

ao invéz de usar sendRedirect() com getContextPath(), pq tu não usa simplesmente o getRequestDispatcher() do ServletContext?

D

“rodrigomaia”:
Cara, tu ja debugou pra saber qual a url que ele ta passando como parametro???

se funciona em todo lugar menos numa situação…

sera que não é o parametro que ta errado???

[]'s

Cara se eu pego e imprimo a url que estou gerando e colo no browser funciona certinho. O caminho está certo.
O redirect que não está rolando.

D

tentei também matheus…
mas não funfou.!

S

O que o viecili quis dizer é que se você já escreveu no response (com PrintWriter.println(), por exemplo), o sendRedirect() não vai ser executado.

M

bem lembrado, é IllegalStateException na hr…

V

já q vc tah mandando pra mesma action/página, então tenta assim:

resp.sendRedirect(req.getRequestURL().toString()+"?codigoLotacao="+(req.getParameter("codigoLotacao"))); return null;
o return null é importante!

F

Ja tentasse fazer dessa forma…?

this.getServletContext().getRequestDispatcher("tuaURL").forward(request, response);

que no teu caso deve ser mais ou menos assim

this.getServletContext().getRequestDispatcher(req.getRequestURL().toString()+"?codigoLotacao="+(req.getParameter("codigoLotacao")).forward(request, response);

tenta exatamente como ta ai, mudandom apenas a tua URL…[/code]

S

Por falar nisso, estou aqui, estudando para a SCWCD. Mas, ao contrário do que o livro diz, essa exceção não ocorreu nos testes que fiz.
Se coloco out.flush(), a linha do redirect é ignorada.
Se tiro, o redirect acontece, mas sem a exceção. :?: :?:

O que você acha?


Deixa pra lá. A exceção ocorre e vai pro log do servidor. :slight_smile:

D

nao sabia disso…
Consegui vi o erro coisa que nao sabia… mesmo
Por exemplo:
tenho uma listagem.jsp e um formulario.jsp com seus respectivos actions(servlets).
Na listagem apenas listo, passando para a formulario.jsp um paramentro, parametro este que serve ou para consultar e editar (alterar), ou excluir o registro.
Só que quando edito, ele numa destas consultas me retornava um valor null para uma variável que eu uso para editar… ai… dá pau… na hora de executar o restante do jsp…
Engraçado é que o meu sendRedirect está antes da declaração de tdodas as variáveis, pelo que eu entendi, sempre irá processar toda a pagina jsp, independentemente de onde está o controle dela.
Correta essa afirmação?

Criado 10 de agosto de 2005
Ultima resposta 10 de ago. de 2005
Respostas 12
Participantes 6