Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34

    servlet passaggio stringhe a jsp

    Avrei un problema nel passaggio di stringhe tra una servlet e una jsp
    La servlet imposta valori:

    String b = "123";
    request.setAttribute("po1" , b);

    Quando nella pagina jsp richiamo il valore attraverso javascript:

    var a = <%=request.getAttribute("po1")%>
    alert(a);

    Questo non causa nessun problema. Ma se la stringa è tipo "aaa" non ritorna niente e quindi non stampa.
    Come risolvo il problema??

  2. #2
    come avviene il passaggio da servlet a JSP? Sei sicuro che avvenga nella stessa request?
    Se non è così usa la session per settare gli attributi...

    ciao
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    la risposta della servlet avviene attraverso questo metodo:
    protected void processRequest(HttpServletRequest request, HttpServletResponse response
    throws ServletException, IOException {

    .
    .
    .
    .
    .

    String b = "aaa";
    request.setAttribute("po1" , b);



    // Invio i parametri all'interfaccia
    request.getRequestDispatcher("index.jsp").forward( request,response);
    }
    come dovrei fare per usare la session???

  4. #4
    strano: la forward dovrebbe preservare i valori (vedi http://www.java-tips.org/java-ee-tip...servlet-t.html) mentre la redirect no.

    Se vuoi usare la session usa request.getSession().setAttribute( ... ) request.getSession().getAttribute( ... )
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    Proprio non riesco...
    Potresti vedere se trovi l'errore: ti invio il codice della servlet


    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class NewServlet111 extends HttpServlet {


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=iso-8859-1");
    PrintWriter out = response.getWriter();
    try {
    request.setAttribute("po1", "aaa");
    request.getRequestDispatcher("interfacciaRicevente .jsp").forward(request,response);

    } finally {
    out.close();
    }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
    return "Short description";
    }// </editor-fold
    }

    questo è invece il codice della pagina jsp:


    <%@page contentType="text/html;charset=iso-8859-1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script type="text/javascript">
    function load(){
    var a = <%=request.getAttribute("po1").toString()%>
    alert(a);
    }
    </script>

    </head>

    <body onLoad="load();">sssss</body>
    </html>


    Se al posto di "aaa" alla variabile dò "111", non c'è nessun problema ed esegue l'alert

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nozzz
    codice:
            <script type="text/javascript">
    function load(){
               var a = <%=request.getAttribute("po1").toString()%>
               alert(a);
        }
    Se al posto di "aaa" alla variabile dò "111", non c'è nessun problema ed esegue l'alert
    Beh, ma non è corretto!!! Intendo dire il modo di generare l'output per formare del codice JavaScript.

    Se la stringa contiene un numero es. "123", il codice generato è:

    var a = 123

    Non fa una piega!

    Ma se l'attributo contiene lettere es. "pippo", il codice generato è:

    var a = pippo

    È senza apici .... pippo dovrebbe essere una variabile JavaScript.

    E se la stringa avesse un apice interno es. "1\"2":

    var a = 1"2

    Tutto sballato!

    Cioè, hai capito la questione di fondo? Tu stai componendo dinamicamente del codice JavaScript in quella sezione. E devi comporlo correttamente!! Secondo le regole della sintassi di JavaScript!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    6
    semplicemente credo che javascript si trovi di fronte:
    caso 123
    var a = 123;
    l'assegnazione riesce, essendo un intero.

    caso aaa
    var a = aaa;
    javascript cerca una variabile di nome aaa e ovviamente non la trova.
    metti le virgolette
    var a = " <%=request.getAttribute("po1").toString()%>"
    e dovrebbe funzionare.
    ps in fondo alla riga dell'assegnazione manca anche il punto e virgola

    edit: ho fatto tardi

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    34
    si erano, le virgolette.. e x la cronaca il codice a parte quello era corretto (riferito ad altre persone)...

    grazie ciao ciao

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nozzz
    si erano, le virgolette..
    Non sarebbe ancora perfetto al 100% .... ripeto il caso di caratteri speciali es. "aa\"bb" che ti diventa aa"bb. Anche se nel codice JavaScript lo metti tra apici doppi, non sarebbe ok.
    Se non ti potrà mai capitare ... ok. Ma se ti dovesse/potesse capitare ......
    L'importante è che hai capito la questione di fondo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.