Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42

    Usare Javascript di Una pagina jsp stampata Tramite innerHTML

    Salve ragazzi,
    Ho una pagina jsp Che tramite JavaScript Al clic dei bottoni del menu Stampa altre pagine Attraverso il metodo innerHTML.
    Il problema mi è sorto quando in una di queste pagine era presente dell'altro codice JavaScript.
    Allora, premendo sul pulsante "classe" viene stampata la pagina jsp con l'elenco degli alunni presenti nella classe. A fianco ad ogni studente c'è una check box E in fondo all'elenco il pulsante "rimuovi" che onsubmit richiama la funzione di JavaScript che controlla che almeno una check box sia selezionata E poi invia i parametri selezionati a un ulteriore pagina per la rimozione dal database.
    Se visualizzo solo tale pagina jsp funziona correttamente, Ma se Clicco sul Pulsante rimuovi nella pagina stampata dinamicamente, se non seleziono una check box mi restituisce un nullPointerException Nella pagina .java creata dal server:
    codice:
    GRAVE: Servlet.service() for servlet [jsp] in context with path [/TIW_PI_BELLAIUTO_MARCO_797626] threw exception [java.lang.NullPointerException] with root causejava.lang.NullPointerException
        at org.apache.jsp.jsp.rimozione_jsp._jspService(rimozione_jsp.java:89)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)
    La pagina creata è questa:
    codice:
    /* * Generated by the Jasper component of Apache Tomcat
     * Version: Apache Tomcat/7.0.53
     * Generated at: 2014-05-31 06:54:31 UTC
     * Note: The last modified time of this file was set to
     *       the last modified time of the source file after
     *       generation to assist with modification tracking.
     */
    package org.apache.jsp.jsp;
    
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    import beans.TitoloBean;
    import beans.UtenteBean;
    import beans.Database;
    
    
    public final class rimozione_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {
    
    
      private static final javax.servlet.jsp.JspFactory _jspxFactory =
              javax.servlet.jsp.JspFactory.getDefaultFactory();
    
    
      private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
    
    
      private javax.el.ExpressionFactory _el_expressionfactory;
      private org.apache.tomcat.InstanceManager _jsp_instancemanager;
    
    
      public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
        return _jspx_dependants;
      }
    
    
      public void _jspInit() {
        _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
      }
    
    
      public void _jspDestroy() {
      }
    
    
      public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
            throws java.io.IOException, javax.servlet.ServletException {
    
    
        final javax.servlet.jsp.PageContext pageContext;
        javax.servlet.http.HttpSession session = null;
        final javax.servlet.ServletContext application;
        final javax.servlet.ServletConfig config;
        javax.servlet.jsp.JspWriter out = null;
        final java.lang.Object page = this;
        javax.servlet.jsp.JspWriter _jspx_out = null;
        javax.servlet.jsp.PageContext _jspx_page_context = null;
    
    
    
    
        try {
          response.setContentType("text/html; charset=ISO-8859-1");
          pageContext = _jspxFactory.getPageContext(this, request, response,
                      null, true, 8192, true);
          _jspx_page_context = pageContext;
          application = pageContext.getServletContext();
          config = pageContext.getServletConfig();
          session = pageContext.getSession();
          out = pageContext.getOut();
          _jspx_out = out;
    
    
          out.write("\r\n");
          out.write("\r\n");
          beans.TitoloBean titolo = null;
          titolo = (beans.TitoloBean) _jspx_page_context.getAttribute("titolo", javax.servlet.jsp.PageContext.PAGE_SCOPE);
          if (titolo == null){
            titolo = new beans.TitoloBean();
            _jspx_page_context.setAttribute("titolo", titolo, javax.servlet.jsp.PageContext.PAGE_SCOPE);
            out.write('\r');
            out.write('\n');
            org.apache.jasper.runtime.JspRuntimeLibrary.introspect(_jspx_page_context.findAttribute("titolo"), request);
            out.write('\r');
            out.write('\n');
          }
          out.write("\r\n");
          out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
          out.write("<html>\r\n");
          out.write("<head>\r\n");
          out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\r\n");
          out.write("<title>rimozione</title>\r\n");
          out.write("</head>\r\n");
          out.write("<body>\r\n");
    
    
    
    
    /*-------------La successiva riga di testo restituisce errore----------------------*/
    
        for (int i=0; i<request.getParameterValues("nome").length;i++){
            Database.rimuoviTitolo(session.getAttribute("username").toString(), request.getParameterValues("nome")[i]);
            
    
    
        }
        
        
          out.write("\t\r\n");
          out.write("\t");
          if (true) {
            _jspx_page_context.forward("portafoglio.jsp");
            return;
          }
          out.write("\r\n");
          out.write("\t\r\n");
          out.write("\r\n");
          out.write("</body>\r\n");
          out.write("</html>");
        } catch (java.lang.Throwable t) {
          if (!(t instanceof javax.servlet.jsp.SkipPageException)){
            out = _jspx_out;
            if (out != null && out.getBufferSize() != 0)
              try { out.clearBuffer(); } catch (java.io.IOException e) {}
            if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
            else throw new ServletException(t);
          }
        } finally {
          _jspxFactory.releasePageContext(_jspx_page_context);
        }
      }
    }
    Praticamente i comandi di JavaScript non funzionano. Ma cosa succede esattamente?

    Come posso risolvere?
    Ultima modifica di MBdip; 31-05-2014 a 10:33

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42
    Non so perché ma non posso più modificare il messaggio… Quindi scusate il doppio post...

    I messaggi di errore sono dovuti al particolare tipo di implementazione che prevede per questo motivo una alert (Per evitare visualizzarsi dell'errore)... Quindi non sono da considerarsi...
    Resta il fatto che però le funzioni JavaScript non funzionino nelle pagine chiamate.
    Cioè se premo un pulsante collegato ad una funzione Javascript non accade nulla...
    Ho fatto delle prove con funzioni che non restituiscono errori se non chiamate

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    - Forse è una domanda java (che con javascript condivide solo parte del nome) visto che posti solo codice java?
    - Perché hanno suddiviso in tanti forum html.it?
    - Sicuro che la programmazione sia il tuo futuro?


    P.S. ho segnalato la discussione che presumibilmente verrà sposta
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42
    Guarda, infatti ho spiegato nel secondo post che quei messaggi di errore non c'entrano niente con il motivo dell'apertura del thread... Ma non mi fa modificare il messaggio...
    Certamente quegli errori sono dovuti anche il codice Java errato, è per questo che devo usare la funzione Javascript Nella mia Web application....
    Quegli errori sono dovuti all'implementazione tramite jsp....
    Ovviamente non selezionando alcun titolo mi restituisce un nullpointerException... Ma vi ripeto è esattamente per questo motivo che ho bisogno delle funzionalità di Javascript per la validazione...
    Ultima modifica di MBdip; 31-05-2014 a 17:17

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Fatico a seguirti, hai degli errori nel codice java e pensi di risolverli con javascript (un po come avere problemi di cuore e mettersi il collirio) ritengo tu abbia troppa confusione e io poca pazienza ti auguro di risolvere.
    Ti lascio a questa discussione potrebbe esserti utile (forse) in caso contrario come non detto.
    Saluti.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42
    No, forse non hai capito! Non cerco di risolvere problemi di Java con Javascript.....
    Io ho delle pagine jsp... Che inevitabilmente possono produrre errori java... Ad esempio, come in questo caso, se chiamo una funzione senza passare parametri…
    In questo caso Javascript mi serve solo per validare il comando... Cioè mi restituisce un alert se cerco di chiamare una funzione senza passare parametri.
    Il mio problema è che se chiamo una pagina jsp contenente Javascript Attraverso una funzione Javascript, Non funziona il codice javascript della pagina chiamata... Anche se contorto non dovrebbe essere difficile da comprendere...

    Ed in effetti mi hai indicato una discussione che traduce ciò che volevo dire........
    mi dispiace che non abbia potuto modificare il messaggio iniziale, quello ha creato confusione.... Lo avevo scritto male ma non ho potuto modificarlo, mi dispiace.
    Spero di risolvere Leggendo la discussione che mi hai indicato, Grazie
    Ultima modifica di MBdip; 31-05-2014 a 17:39

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da MBdip Visualizza il messaggio
    No, forse non hai capito!
    Il che significa che ti sei spiegato male (concetto assoluto di comunicazione) e sopratutto cerca di limitare i puntini di sospensione che non agevolano
    Non cerco di risolvere problemi di Java con Javascript.....
    Io ho delle pagine jsp... Che inevitabilmente possono produrre errori java... Ad esempio, come in questo caso, se chiamo una funzione senza passare parametri…
    Ciò non toglie che gli errori/mancanze lato server vanno gestiti lato server o rimandando ad una pagina errori oppure stampando a video con dei print "errore manca...." per fare questo usare js è sbagliato e non corretto
    In questo caso Javascript mi serve solo per validare il comando... Cioè mi restituisce un alert se cerco di chiamare una funzione senza passare parametri.
    Il mio problema è che se chiamo una pagina jsp contenente Javascript Attraverso una funzione Javascript, Non funziona il codice javascript della pagina chiamata...
    Perché js (javascript) non interpreta js o meglio la parola javascript per questo rimandavo a quella discussione (che non hai letto)
    Anche se contorto non dovrebbe essere difficile da comprendere
    Che sia contorto condivido che si capisca un po meno
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42
    Ho letto la discussione, ancora non ne vengo a capo.
    Come ho scritto più volte Il primo messaggio ha creato confusione, Mi è dispiaciuto molto ma purtroppo non ho potuto modificarlo… Tra l'altro mi spiegavo nel secondo messaggio.
    Cerco di trovare nuovamente la soluzione, intanto grazie per avermi fatto comprendere il motivo… Non sapevo che Javascript non interpretasse la parola Javascript...

    Con le giuste modifiche il codice funziona, anche se non ho capito molto della funzione execJS...
    codice:
    //-----------------------------------------------------//valuta il codice javascript e restituisce la stringa
    //senza codice
    //-----------------------------------------------------
    function execJS(t)
    {
        var p1 =0, p2 =0, p3 =0, p4 =0;
        p1 = t.indexOf("<"+"script",0); 
        if(p1 ==-1)return t;
        
        p2 = t.indexOf(">", p1 +7)+1;
        p3 = t.indexOf("<"+"/script>", p2);
        p4 = p3 +9;
        
        var c = t.substring(p2, p3);
        var s = document.createElement("script");
        s.type ="text/javascript";
        s.text = c;
        document.getElementsByTagName("head")[0].appendChild(s);
        
        t = t.substring(0, p1)+ t.substr(p4);
        return execJS(t);
    
    }
    Perché nella seconda riga della funzione "<" e "script" sono divisi?
    Inoltre non ho capito le ultime due righe…
    Cioè la funzione execJS estrapola il codice presente tra i tag <script> </script> e lo appende nell'header Creando un nuovo elemento script (presuppongo gli stessi tag)... Ma non afferro le ultime due righe...

    Eventualmente avrei potuto appendere tutta la stringa dello script compresi i tag all'interno dell'header? Se no perché è obbligatorio creare un elemento script?
    Ultima modifica di MBdip; 31-05-2014 a 18:59

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42
    Con la penultima riga elimino i tag (Anche se non mi è chiara la disposizione degli interi) e con l'ultima ritorno tutta la pagina senza script.

    Eventualmente avrei potuto appendere tutta la stringa dello script compresi i tag all'interno dell'header? Se no perché è obbligatorio creare un elemento script?
    Visto che abbiamo detto che Javascript non legge il testo dello script, è davvero necessario eliminarlo?
    (Se dovessi scrivere il codice ci metterei troppo, per questo chiedo e non provo)

    ps
    Chiedo venia ma essendo tetraplegico ci metto parecchio per modificare un messaggio... E ci sono stati degli errori di visualizzazione quindi avevo rriscritto il messaggio inutilmente
    Ultima modifica di MBdip; 31-05-2014 a 19:13

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 © 2025 vBulletin Solutions, Inc. All rights reserved.