JSP + Ajax eServlet

15 respostas Resolvido
jspajaxservlet
E

Boa tarde Galera!
Estou com um pequeno problema…
Estou enviando um parâmetro da minha JSP por Ajax para o meu Servlet.
O servlet chama um métodos e gera uma lista a partir desse parâmetro enviado.
Agora preciso enviar essa lista para minha jsp, e não estou conseguindo.

15 Respostas

D

Está enviando essa lista através do que? Sessão? Request?

E

Request.
Atualizando a pagina eu consigo enviar…
Meu código anterior está assim:

String usLog = request.getParameter("param");
                    //System.out.println("param: " + usLog);

                    ExibirComboDao c = new ExibirComboJdbc();
                    List<ExibirComboBean> combo = c.listaCombo(usLog);
                    
                    request.setAttribute("cad", combo);
                                            
                    view = request.getRequestDispatcher("cadastro.jsp");
                    view.forward(request, response);
D

Se está fazendo desta maneira, não deveria ter problemas.
Na jsp, basta:

<% List<ExibirComboBean> combo = (List<ExibirComboBean>) request.getAttribute("cad"); %>

Deveria funcionar.

E

Dessa maneira funciona.
Eu não quero atualizar a pagina.
Estou no meio do formulário, quando eu informo a matricula do usuário, necessito que o sistema busque as informações referente a esse usuario e não apague o que já foi informado do formulario

D

Entendi.
A questão é que você está usando ajax e, portanto, ou você devolve um objeto do tipo json (pode ser um texto com formato json) ou você devolve um conteúdo onde esse json é apresentado.
Se insistir em usar o forward ou o redirect, não vai rolar mesmo.
Dá uma olhada nesse exemplo e vê se te ajuda.

E

Vou dar uma olhada…
Obrigado.

E

Boa tarde darlan_machado, dei uma olhada e consegui levar para a jsp, o problema é que utilizando o response.setContentType(“application/json”); ele leva para a JSP demonstrando apenas o objeto:
[object Object],[object Object],[object Object] e se eu colocar response.setContentType(“application/text”); ele leva assim:
[{“mat”:“002098”,“nome”:"ADENILSON PEREIRA FONSECA ",“cc”:"510021 "},{“mat”:“001531”,“nome”:"SANDRO DE LIMA BARRETO ",“cc”:"510021 "},{“mat”:“001178”,“nome”:"ELIZANDRO DA SILVA BARBOSA ",“cc”:"510021 "}}
Como posso exibir em uma lista exibindo apenas os valores?

D

Então seta conforme precisar, oras.

E

Como?
Não sei como trabalhar os retorno do Json na JSP.

D

Em que ponto ele faz isso e como você está tratando no javascrtipt/ajax?

E

Não estou tratando…

$(document).ready(function() {
    $('#ajax').blur(function(event) {
            var name = $('#ajax').val();
            $.post('ajaxGetUserServletResponse', {
                    param : name
            }, function(responseText) {
                    $('#ajaxGetUserServletResponse').text(responseText);
                    
            });
    });

});
acima o meu script que envia por ajax para o servlet, o retorno está assim:

$(’#ajaxGetUserServletResponse’).text(responseText);

Não sei como tratar.

D

Trate esse retorno. Senão, vai ter esse problema, com certeza.

E

Como eu trato?
Não entendi essa parte.

D
Solucao aceita

Primeiro: se você recebe como texto, precisa converter para objeto javascript:

var retorno = JSON.parse(responseText);

Isso deve transformar a variável retorno em um array semelhante ao que você tem no retorno em que seta como “application/text”:

Aí, você precisa manipular estes dados para conseguir inserir na página:

$.each(retorno, function(i, data){
    $('#idDoComponenteEmQueVaiInserir').append('<p>Matrícula: ' + data.mat + '<br/>Nome: ' + data.nome + '</p>);
});

Faz tempo que não mexo com jQuery, mas deve ser isso.

E

Obrigado.

Criado 10 de maio de 2019
Ultima resposta 20 de mai. de 2019
Respostas 15
Participantes 2