Problemas Struts+AJAX+JSP[Resolvido]

4 respostas
felipeguerra

Pessoal,

Sei que foge um pouco do intuito do fórum, massss, estou com um problema na hora de navegar num XML que é retornado na minha action.

Minha Action:

public ActionForward execute(ActionMapping map,
								ActionForm form,
								HttpServletRequest request,
								HttpServletResponse response) {
		
		ActionForward forward = new ActionForward();
		NaoIntegradoDAO clienteSQL = new NaoIntegradoDAO();
		
		try {
			
			String param = request.getParameter("controleFluxo");
			
			if(param != null && param.equals("getClientes")) {
				response.setContentType("text/xml");
				response.setHeader("Content-Type", "application/xml");
				response.getWriter().print(clienteSQL.getArquivosNaoIntegrados());
				forward = null;
				
			}else {
				forward = map.findForward("sucesso");
			}
		
		}catch(IOException ioe) {
			request.setAttribute("msgErro", ioe.getMessage());
			forward = map.findForward("erro");
			
		}catch(ErroException e) {
			request.setAttribute("msgErro", e.getMessage());
			forward = map.findForward("erro");
		}
		
		return forward;
	}

JavaScript:

if(obj_XmlHttp) {
			obj_XmlHttp.open( "POST", "/siri/ArqNaoIntegrados.do", true );
			obj_XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
			obj_XmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			obj_XmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			obj_XmlHttp.setRequestHeader("Pragma", "no-cache");

			obj_XmlHttp.onreadystatechange = function() {
				var obj_selectCli;
	
				try {
					if(obj_XmlHttp.readyState == 1) {
						obj_selectCli = "<select style='width: 250' id='listClientes'>" +
											"<option id='cliente'>Aguarde..............</option>" +
										"</select>";
											
						document.getElementById("clientes").innerHTML = obj_selectCli;
					}
			
					if(obj_XmlHttp.readyState == 4) {
						var dados = obj_XmlHttp.responseText;
						alert(dados.substring(0, 2048));
						if(obj_XmlHttp.status == 200) {
							if(obj_XmlHttp.responseXML) {
								obj_selectCli = "<select style='width: 250' id='listClientes'>" +
													"<option id='cliente'>Processando XML...........</option>" +
												"</select>";
												
								document.getElementById("clientes").innerHTML = obj_selectCli;

								listaClientes(obj_XmlHttp.responseXML);

							}	
						}
					}
			
				}catch(e) {
					alert("Erro ao processar a requisição ao servidor." + e.description);
				}
			}
			var param = "controleFluxo=getClientes";
			obj_XmlHttp.send(param);
		}

Obs: Na variável dados acima, consigo visualizar o XML normalmente, só que, como o responseText é apenas um teste, o que me interessa é o responseXML!

Valeu

4 Respostas

A

Mas qual o seu problema ??

felipeguerra

Então, no método responseXML não sei o que retorna, pois quando tento pegar um tag específica do meu XML, ele diz que é null.

Porém, se eu fizer responseXML == null recebo como resposta: false

Então como vou extrair os dados do meu XML, né?

ramilani12

Ele esta construindo corretamente no XML?
Vc nao esta navegando nos nodes do XML:

Veja aqui um simples exemplo DOM para percorrer um XML:

http://www.w3schools.com/dom/prop_document_childnodes.asp

Amanha posso te passar um exemplo de preencher um Select …

felipeguerra

Camarada, eu acho que sei o motivo do problema, mas até agora não consegui resolver.

É o seguinte, meu XML tem caractéres especiais nos valores dos nodos, por exemplo:

<cliente id="00001"> <nome>$LOREM IPSUM & LOREM LTDA.</nome> </cliente>

E agora?rs

Criado 6 de agosto de 2007
Ultima resposta 7 de ago. de 2007
Respostas 4
Participantes 3