Pacato
Dezembro 5, 2014, 2:34pm
#1
Pessoal
Tenho essa lista no servlet, e queria enviar por JSON, só que não faço ideia como:
for (int i = 0; i < dadosVeiculo.size(); i++) {
request.setAttribute("placa", dadosVeiculo.get(i).getPlaca());
/*dadosVeiculo.get(i).getMarca();
dadosVeiculo.get(i).getModelo();
dadosVeiculo.get(i).getAnoFabricacao();
dadosVeiculo.get(i).getAnoModelo();
dadosVeiculo.get(i).getRenavam();
dadosVeiculo.get(i).getCor();*/
}
Da uma lida sobre JSON.parse() que vai resolver esse seu problema.
Pacato
Dezembro 8, 2014, 7:54am
#3
Tentei seguir os exemplos da documentação, mas não vai valor…
[code]
var placass = ‘${placa}’;
$( placa ).val(placass);[/code]
tentei assim:
var placass = '${placa}';
var obj = jQuery.parseJSON( '{ "placa":placass}');
alert(obj.placa)
Eu uso o inspecionar elemento do Chrome e fica vazio o valor do ‘${placa}’, de ambos os jeitos… mas no servet com system.out.println() o valor ta la…
alexfe
Dezembro 9, 2014, 10:01am
#4
Vc tem que passar o valor da tela para dentro do javascript, não pode simplesmente escrever a variavel no javascript.
Pacato
Dezembro 9, 2014, 12:24pm
#5
vc tem alguma dica? para tratar isso?
alexfe
Dezembro 9, 2014, 12:45pm
#6
primeiro passo é passar seu dados corretamente para o java script atraves de uma function ?? vc sabe javascript ?
Pacato
Dezembro 9, 2014, 2:00pm
#7
sim… mais ou menos… eu estava treinando ajax (ainda estou)… a comunicação de enviar ta blz… mas de retorno ainda ta zuada…
[code] $(document).ready(function(){
$("select[name='veiculo']").change(function(){
var dataVeiculo = {"veiculo": $(this).val(),"loginUsuario":'${loginUsuario}'};
var placa = $("input[name='placa']");
$.ajax({
type : "POST",
url: "ServletEditarDados",
data: dataVeiculo,
success: function(response)
{
$( placa ).val('Carregando...');
var obj = jQuery.parseJSON( '{ "placa":placass}');
$( placa ).val(obj.placa);
}
});
});
});[/code]
Tentei passar a lista para Json com a lib GSON (String json = (new Gson).toJson(dadosVeiculo) mas não sei depois como separar por item… tipo:
dadosVeiculo.placa
E nem retornar para a function
alexfe
Dezembro 9, 2014, 2:21pm
#8
A resposta para o ajax é assim
no caso ela virá como retorno dentro da variavel “response” do seu ajax
No caso de vc transformar JSON para objeto vc tem que ter um objeto para a API fazer a conversão de JSON para Objeto, a estrutura do objeto deve ser compativel com o json
Pacato
Dezembro 10, 2014, 7:48am
#9
Tentei setar assim:
Mas pede para ser INT… tentei json:
e assim:
String json = gson.toJson(dadosVeiculo.get(0).getPlaca());
ServletResponse httpServletResponse = null;
httpServletResponse.getWriter().write(json);
Realmente não estou entendendo a alma do negócio… me desculpe a amolação alexafe… mas ta difícil de entrar na cabeça
Ambos os casos da nullponiter em
httpServletResponse.getWriter().write(json)
alexfe
Dezembro 10, 2014, 8:06am
#10
Os seu dados chegam na servlet ??? corretamente ?
vc não pode setar o objeto para null
o seu httpServletResponse tem que ser o que vem da servlet do seu request, vc tem que trabalhar com a servlet, vc conhecer de servlet ??
Pacato
Dezembro 10, 2014, 8:30am
#11
no servlet ta beleza…
Eu seto os valores e eles estão lá… se eu deixar no setAttribute, e pegar na jsp ele está lá…
Mas não estou conseguindo neste processo de pegar na function para setar o campo…
Pacato
Dezembro 10, 2014, 8:44am
#13
Segue:
[code]protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String veiculo = request.getParameter("veiculo");
String dispositivo = request.getParameter("dispositivo");
PgpmDAO dao = new PgpmDAO();
HttpSession session = request.getSession();
String login = (String) session.getAttribute("loginUsuario");
if (!("0".equals(veiculo) || veiculo == null)){
List<ListaVeiculo> dadosVeiculo = new ArrayList<ListaVeiculo>();
dadosVeiculo = dao.consultaDadosVeiculo(veiculo, login);
Gson gson = new Gson();
String json = gson.toJson(dadosVeiculo);
if(dadosVeiculo != null){
for (int i = 0; i < dadosVeiculo.size(); i++) {
request.setAttribute("placas", dadosVeiculo.get(i).getPlaca().toString());
/*dadosVeiculo.get(i).getMarca();
dadosVeiculo.get(i).getModelo();
dadosVeiculo.get(i).getAnoFabricacao();
dadosVeiculo.get(i).getAnoModelo();
dadosVeiculo.get(i).getRenavam();
dadosVeiculo.get(i).getCor();*/
}
request.setAttribute("dadosVeiculo", dadosVeiculo);
} else {
msgRetornoDados = "Nenhum registro do veículo";
request.setAttribute("msgRetornoDados", msgRetornoDados);
request.getRequestDispatcher("editarDados.jsp").forward(request, response);
}
} else {
msgRetornoDados = "Selecione um Chassi Válido";
request.setAttribute("msgRetornoDados", msgRetornoDados);
request.getRequestDispatcher("editarDados.jsp").forward(request, response);
}
}[/code]
alexfe
Dezembro 10, 2014, 8:59am
#14
Vou te atendar a alguns detalhes
Não visualizei o dispositivo sendo enviado por ajax para ser pego na servlet
Outra coisa por exemplo essa linha
request.setAttribute apenas será entendido pelo jsp e não pelo ajax.
e o mais importante por exemplo nesta linha
vc está fazendo o redirecionamento, se vc está esperando o retorno em ajax vc não pode redirecionar senão a resposta é perdida.
após toda essas correções a sua resposta seria assim atraves do response da sua servlet
e a resposta viria na variavel response do seu ajax se não houver nenhuma erro porque vc está esperando a resposta apenas se obter sucess no ajax
Pacato
Dezembro 10, 2014, 9:14am
#15
O Dispositivo ainda será algo que irei fazer após eu conseguir por chassi, mas por enquanto eu só criei a variável…
O msgRetorno é algo que já tem la´sem ser por ajax, mas para enviar uma mensagem de erro na condição de javascript:
[code] var msgRetornoDados = document.getElementById(“msgRetornoDados”);
if (msgRetornoDados != null && msgRetornoDados.value != "") {
alert(msgRetornoDados.value);
}[/code]
A única coisa de ajax que estou tentando fazer é o retorno dos dados do veículo…
Mas, só uma dúvida alexafe…
Com o response.getWriter().write(“respota valor de retorno aqui”); o que e como eu retornaria?
Pq preciso passar todas aquelas informações do veículo… então como eu passaria para cada item dentro de um só response?
E muito obrigado pelos apontamentos…
alexfe
Dezembro 10, 2014, 9:31am
#16
Nessa linha vc está convertendo para json
joga ele na resposta é uma string
Pacato
Dezembro 10, 2014, 1:24pm
#17
no Jsp ele retorna Exatamente assim :
[{“chassi”:“xxxxxx”,“placa”:“123Teste”}]
Os valores estão certos… mas não sei como pegar os valores separados… tipo chassi, placa separados, pois quero setar no campo.
[code]success: function(response)
{
$( placa ).val(response);
}[/code]
alexfe
Dezembro 10, 2014, 1:35pm
#18
var objeto = JSON.parse(response);
$( placa ).val(objeto.placa);
Pacato
Dezembro 10, 2014, 1:53pm
#19
Não vai… .tinha tentado assim…
alert(response);
var objeto = JSON.parse(response);
$( placas ).val(objeto.placa);
o valor está como undefined
alexfe
Dezembro 10, 2014, 2:03pm
#20
É por causa das chaves [ e ] , tenta fazer o parse mas antes retirar as chaves [ e ] e se der certo quando tem as chaves tem que ser feito de outra forma porque dai é uma lista de json neste link tem o exemplo
http://www.mkyong.com/jquery/jquery-loop-over-json-string-each-example/