Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Retorno de requisição Ajax dentro da JSP não é carregada.

Eu preciso fazer com que ao clicar em um botão de uma linha da tabela, seja aberta uma outra pagina com informações detalhadas referentes a essa linha da tabela.

Eu fiz então uma chamada GET para a minha Servlet usando JQuery dentro da JSP, passando o ID na url, então na minha Servlet eu dei um forward enviando para a minha outra JSP com meu objeto contendo todas as informações detalhadas para serem exibidas.

A requisição ocorre com sucesso, o meu problema está no fato de que após o GET ser executado, o for forward não envia para minha outra JSP, ele mantem na minha mesma pagina.

Olhando o Network do chrome, eu percebi que no response da minha requisição a pagina é retornada da maneira correta, então o forward está fazendo o que deveria fazer, porém a minha pagina não atualiza provavelmente porque fica esperando um ação no retorno da minha chamada GET com JQuery.

Porém eu não sei como tratar esse retorno para ele ir para a pagina correta, porque se eu alterar o window.location por exemplo, ele vai redirecionar só que vai perder o objeto que minha servlet retorna ...

Chamda GET:

<script>
    $(document).ready(function(){        
        $("button").click(function(){
            $.get("descricao-paciente?id="+this.id).done(function(data){
                ????
            });
        });
    });
</script>

Servlet:

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("paciente", pacienteService.consultaPorId(Long.parseLong(req.getParameter("id"))));
        RequestDispatcher rd = req.getRequestDispatcher("/descricao_paciente.jsp");
        rd.forward(req, resp);
    }

Talvez nem seja o jeito certo de fazer isso, se alguém puder me falar como seria a melhor forma de fazer, ou que eu tenho que modificar eu ficaria grato.

3 respostas
solução!

Boa tarde, Maxwel! Como vai?

Isso está acontecendo pq é o modo padrão do Ajax funcionar! Com ele vc deveria pegar os dados retornados pela Servlet e mudar a tela de acordo sem fazer um recarregamento da página e sem navegação! No entanto, pelo que vc falou, o que vc deseja é justamente fazer uma navegação para a página com detalhes do item selecionado. Então, a forma correta de resolver isso seria simplesmente criando um link em cada item que possibilite a navegação para a página de detalhamento.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos!

Verdade, realmente assim é o melhor caminho. Obrigado!

Por nada, Maxwel! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos!