Serlvet response.sendRedirect()

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")))

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…

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?

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

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

[quote=“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[/quote]

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.

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

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.

bem lembrado, é IllegalStateException na hr…

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!

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]

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:

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?