Recuperar valor de dentro de um Map no javascript - AJAX

2 respostas
marciobarroso

Alguém saberia me dizer como recuperar os valores de um Map que uma função javascript recebe como parametro no AJAX ?

Tipo

// Esta função recebe a resposta do servidor recebendo um Map como parametro.
function execute( map ) {

	var lista = map.getElementByTagName('lista');
	...
}

// Sendo que em minha classe eu tenha :

HashMap map = new HashMap();
Lista lista = new ArrayList();
lista.add(Integer.valueOf(5));
map.put("lista", lista);

return map;

Obrigado

2 Respostas

zirocool

Meu amigo, antes de mais nada, entenda:

:arrow: javascript = lado cliente;
:arrow: jsp/servlets = lado servidor;

Pra ti recuperar o que tu quer, tu vai ter que gerar uma resposta em texto (penso eu).

marciobarroso

zirocool:
Meu amigo, antes de mais nada, entenda:

:arrow: javascript = lado cliente;
:arrow: jsp/servlets = lado servidor;

Pra ti recuperar o que tu quer, tu vai ter que gerar uma resposta em texto (penso eu).

Eu acho que vc que não entendeu o que eu perguntei… Mas sem gerar polêmica, postarei todo o código para que os demais entenda o que é javascript e o que é java.( Essa dúvida eu tive a uns 4 anos atrás, qdo comecei a me interessar em estudar java )

index.jsp

<%@ page contentType="text/html;charset=iso-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<script type='text/javascript' src='script/script.js'></script>
		<script type='text/javascript' src='dwr/interface/Ajax.js'></script>
		<script type='text/javascript' src='dwr/engine.js'></script>
		<link href="visual/trs/padrao.css" rel="stylesheet" type="text/css"/>
		<title><bean:message key="mensagem.titulo"/></title>

	</head>
	<body>
	
	<h2>Busca de nomes</h2>
	
	<div>
		Nome: <br>
		&lt;input type="text" id="nome" onkeyup="buscar(this.value, 'resultados');" class="entrada"&gt;<br>
	&lt;/div&gt;
	&lt;div id="resultados" class=""&gt;&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;

script.js

var component;

function $(id) {
	return document.getElementById(id);
}

function buscar(patern, component) {
	this.component = component;
	if( patern != "" ) {
		Ajax.buscar(preencheResultados, patern.toLowerCase());
	}
	else{
		preencheResultados('');
	}
}

function preencheResultados( map ) {
	var values = map.getElementByTagName('lista'); [b]// É assim que eu pego um valor de um map ?!?[/b]
	
	var data = "";
	for (var i = 0; i &lt; values.length; i++) {
		data += "<a >" + values[i] + "</a><br>";
	}
	$(component).innerHTML = data;
}

function seleciona(value) {
	$(component).value = value;
}

Ajax.java

/**
 * Project Name	: Loja
 * Class Name	: Ajax.java
 * Created by 	: Márcio Alves Barroso | [email removido]
 * Created on	: 13/06/2006 | 15:23:12
 */
package loja.view.action.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @author Márcio Alves Barroso
 */
public class Ajax {
    
    private static final String LIST_VALUE = "lista";
    
    @SuppressWarnings("unchecked")
    private static List&lt;String&gt; lista = new ArrayList&lt;String&gt;();
    static
    {
        lista.add("Márcio");
        lista.add("Théo");
        lista.add("Luiz");
        lista.add("Marisa");
        lista.add("Sônia");
        lista.add("Tereza");
        lista.add("Lurdes");
        lista.add("Cloves");
        lista.add("Celso");
        lista.add("Ronaldo");
        lista.add("Milton");
        lista.add("Cleber");
        lista.add("Tersio");
        lista.add("Douglas");
        lista.add("Fernando");
        lista.add("Lucas");
        lista.add("Maria");
        lista.add("Rosa");
        lista.add("Luiza");
        lista.add("Mônica");
    }
    
    @SuppressWarnings("unchecked")
    [b]public static HashMap buscar(String nome, String component)[/b] {
        synchronized(lista) {
            List list = new ArrayList();
            for( int i=0; i &lt; lista.size(); i++ ){
                String tempNome = lista.get(i).toString();
                if( replace(tempNome).indexOf(nome) &gt; -1 ) {
                    list.add(tempNome);
                }
            }
            HashMap result = new HashMap();
            result.put(LIST_VALUE, list);
            return result;
        }
    }
    
    private static String replace(String text) {
        String temp = text.toLowerCase();
        String retorno = "";
        String[]oldCharacter = new String[]{"á", "à", "â", "ã", "ä",
                                            "é", "è", "ê", "ë",
                                            "í", "ì", "î", "ï",
                                            "ó", "ò", "ô", "õ", "ö",
                                            "ú", "ù", "û", "ü" };
        for( int i=0; i &lt; temp.length(); i++ ) {
            String w = temp.substring(i, i+1);
            boolean test = false;
            
            loop:   for( int j=0; j &lt; oldCharacter.length; j++ ) {
                        if( w.equals(oldCharacter[j]) ) {
                            if( j &lt; 5 ) {
                                retorno += "a";
                            }
                            else if( j &lt; 9 ) {
                                retorno += "e";
                            }
                            else if( j &lt; 13 ) {
                                retorno += "i";
                            }
                            else if( j &lt; 18 ) {
                                retorno += "o";
                            }
                            else if( j &gt; 17 ) {
                                retorno += "u";
                            }
                            test = true;
                            break loop;
                        }
                    }
            if( !test ) {
                retorno += w;
            }
        }
        return retorno;
    }
    
    @SuppressWarnings("unused")
    private static String geraXml( List list ) {
        StringBuffer sb = new StringBuffer();
        sb.append("&lt;usuarios&gt;");
        for( Object nome : list ) {
            sb.append(adicionaNoXml(nome.toString()));
        }
        sb.append("&lt;/usuarios&gt;");
        System.out.println(sb.toString());
        return sb.toString();
    }
    
    private static String adicionaNoXml( String nome ) {
        StringBuffer sb = new StringBuffer();
        sb.append("&lt;usuario&gt;");
        sb.append("&lt;nome&gt;"+nome+"&lt;/nome&gt;");
        sb.append("&lt;/usuario&gt;");
        return sb.toString();
    }
    
}

Minha dúvida está no script.js, onde ele recebe um Map no retorno no método chamado pelo ajax, e eu preciso recuperar um objeto qualquer de dentro do Map.

Espero que tenho sido claro agora.

[ :lol: ]

Criado 11 de julho de 2006
Ultima resposta 11 de jul. de 2006
Respostas 2
Participantes 2