Parametro de .js para .jsp

9 respostas
X

Pessoal,

preciso passar um array de um .js para uma pagina .jsp, já tentei algumas dicas e exemplos aqui do forum e não consegui, alguem poderia ajudar ? talvez exemplificar

Agradeço desde já

9 Respostas

J

Faz o seguinte, manda o que você já fez e deu errado, aí a gente trabalha em cima disso!
Mais fácil consertar o errado, do que te levar a trabalhar de outro jeito…
Abraço.

X

Certo,

var AppId = "xxxxxxxxxxxxxxxxxxxxxxxxx";

function Search(chave)
{
    var requestStr = "http://api.search.live.net/json.aspx?"

    // Common request fields (required)
    + "AppId=" + AppId
    + "&Query="+"\""+ chave+"\"" //trecho a ser buscado
    + "&Sources=Web"

    // Common request fields (optional)
    + "&Version=2.0"
    + "&Market=en-us"
    + "&Adult=Moderate"
    + "&Options=EnableHighlighting"

    // Web-specific request fields (optional)
    + "&Web.Count=10"
    + "&Web.Offset=0"
    + "&Web.Options=DisableHostCollapsing+DisableQueryAlterations"

    // JSON-specific request fields (optional)
    + "&JsonType=callback"
    + "&JsonCallback=SearchCompleted";

    var requestScript = document.createElement("script");
    requestScript.type = "text/javascript";
    requestScript.src = requestStr;

    var head = document.getElementsByTagName("head");
    head[0].appendChild(requestScript);
}

function SearchCompleted(response)
{
    var errors = response.SearchResponse.Errors;
    if (errors != null)
    {
        // There are errors in the response. Display error details.
        DisplayErrors(errors);
    }
    else
    {
        // There were no errors in the response. Display the
        // Web results.
        DisplayResults(response);
    }
}

function DisplayResults(response)
{
    var output = document.getElementById("output");
    var resultsHeader = document.createElement("h4");
    var resultsList = document.createElement("ul");
    output.appendChild(resultsHeader);
    output.appendChild(resultsList);

    var results = response.SearchResponse.Web.Results;


    // Display the Web results.
    var resultsListItem = null;
    var resultStr = "";
                
    for (var i = 0; i < results.length; ++i)
    {
        resultsListItem = document.createElement("li");
        resultsList.appendChild(resultsListItem);
        resultStr =  results[i].Url;

        for (var j = 0; j < results.length; j++)
        {

            S = "result="+results[j].Url;
            window.location.href = "http://localhost:8081/BingSearch/index.jsp?"+S;
        }


        // Replace highlighting characters with strong tags.
        resultsListItem.innerHTML = ReplaceHighlightingCharacters(
            resultStr,
            "<strong>",
            "</strong>");
    }
}

function ReplaceHighlightingCharacters(text, beginStr, endStr)
{
    // Replace all occurrences of U+E000 (begin highlighting) with
    // beginStr. Replace all occurrences of U+E001 (end highlighting)
    // with endStr.
    var regexBegin = new RegExp("\uE000", "g");
    var regexEnd = new RegExp("\uE001", "g");

    return text.replace(regexBegin, beginStr).replace(regexEnd, endStr);
}

function DisplayErrors(errors)
{
    var output = document.getElementById("output");
    var errorsHeader = document.createElement("h4");
    var errorsList = document.createElement("ul");
    output.appendChild(errorsHeader);
    output.appendChild(errorsList);

    // Iterate over the list of errors and display error details.
    errorsHeader.innerHTML = "Errors:";
    var errorsListItem = null;
    for (var i = 0; i < errors.length; ++i)
    {
        errorsListItem = document.createElement("li");
        errorsList.appendChild(errorsListItem);
        errorsListItem.innerHTML = "";
        for (var errorDetail in errors[i])
        {
            errorsListItem.innerHTML += errorDetail
            + ": "
            + errors[i][errorDetail]
            + "<br />";
        }

        errorsListItem.innerHTML += "<br />";
    }
}

a Ideia é:

passar results[i].Url para .JSP

daí tentei assim..

for (var j = 0; j < results.length; j++)
        {

            S = "result="+results[j].Url;
            window.location.href = "http://localhost:8081/BingSearch/index.jsp?"+S;
        }

como capturo na index.jsp ? isso ta certo? tem outro jeito??

Obrigado.

J

Nossa também estou com o mesmo problema. Se alguém resolver vai me tirar do sufoco.

J

Cuidado com esse trecho abaixo:
window.location.href = "http://localhost:8081/BingSearch/index.jsp?"+S;

Voçê deve criar um parâmetro, pois como você pegará no jsp? O certo seria algo como isso:
window.location.href = “http://localhost:8081/BingSearch/index.jsp?valor=”+S;

Aí no jsp você usa o objeto implícito request.getParameter(?valor?); entendeu?
Mas bonito seria usar Expression Language, algo como isso: ${param[‘valor’]}

Abraço.

Site:http://www.jorgeluis.eti.br
Blog:http://blog.jorgeluis.eti.br
E-mail:[email removido]

J

Outra maneira de pegar um array javascript em um jsp:

Crie um .js com o conteúdo abaixo:

nomes = new Array(2);
nomes[0] = "Jorge";
nomes[1] = "Márcia";

Depois um jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<html>
  <head>
    
        <title>Resposta</title>
	
  //aki vc importa ele
  <script src="js/script.js" type="text/javascript"></script>
  <body>
     <br>
	//aki vc inicia um array em java com JSTL
  <c:forEach var="n" items="<script>document.write(nomes)</script>">
      ${n}
      
  </c:forEach>
  	
   
  </body>
</html>

O jsp acima está fazendo o uso de JSTL, o que é considerado um boa prática, não devemos pôr muita lógica na nossa camada de apresentação!
Espero ter ajudado.
Abraço.

Site:http://www.jorgeluis.eti.br
Blog:http://blog.jorgeluis.eti.br
E-mail:[email removido]

X

Saquei,

de qualquer lugar os parametros são visiveis ou apenas na Index.JSP

Obrigado.

G

Se você passar parametros com o mesmo nome, você consegue recuperar um array de valores com o método getParameterValues da classe HttpServletRequest

http://www.suaapp.com/qualquer.jsp?param=a&param=b&param=c&param=d
String[] params = request.getParameterValues("param");

mais ou menos isso?

J

Ih esquece a minha primeira resposta… Eu não vi direito, vc já criou um parâmetro…
Se você passa ‘result=qualquer coisa’, você deve usar o objeto implícito request para recuperar…
request.getParameter(?result?)

E também o que o g4j disse é super válido!

String[] params = request.getParameterValues("param");

Abraço.

Site:http://www.jorgeluis.eti.br
Blog:http://blog.jorgeluis.eti.br
E-mail:[email removido]

X

devo esta fazendo algo de errado>…

dentro do .js coloquei:

window.location.href = "http://localhost:8081/BingSearch/index.jsp?param="+results[2].Url;

pra me passar a segundo link do vetor.

na pagina .jsp estou colocando

<body onload="Search('A Caelum')"></body> //chama o .js pra iniciar as buscas

    <%
        String params = request.getParameter("param");

      
         System.out.println(params); 
    %>

    <div id="output"></div>

ponho para imprimir no console, so que me retorna null

Abço

Criado 9 de outubro de 2009
Ultima resposta 9 de out. de 2009
Respostas 9
Participantes 4