Syntax error on token "else", delete this token.

di il
5 risposte

Syntax error on token "else", delete this token.

Salve, ho un problema con la struttura di controllo che ho inserito in questa pagina jsp, che ho creato con eclipse: [CODE] <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="pkg1.Anagrafica" %> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Esito Ricerca</title> </head> <body> <center> <%--il metodo getAttribute restituisce valori di tipo Object --%> <% String ricerca=(String)request.getAttribute("ricerca"); %> <%if(ricerca=="trovato") {%> <%Anagrafica dip=(Anagrafica)request.getAttribute("dip"); %> <%= dip.getMatricola()+dip.getNome()+dip.getCognome() %> <%} %> <%else %> <%System.out.println("Elemento non trovato."); %> </center> </body> </html> In pratica nella riga di codice dove è presente else mi dice questo:
Syntax error on token "else", delete this token.

5 Risposte

  • Re: Syntax error on token "else", delete this token.

    mark13 ha scritto:


    [CODE] <%= dip.getMatricola()+dip.getNome()+dip.getCognome() %> <%} %> <%else %> <%System.out.println("Elemento non trovato."); %>
    Tranquillo, è un "classico" errore. Come (spero) sai, le JSP vengono trasformate nel sorgente Java di una Servlet e poi ovviamente questo sorgente viene compilato. Quello che metti tra <% %> è codice Java puro. Il resto è la parte "template" della pagina e viene trasformato in output emesso con una write().

    Nota che dopo il tuo <%} %> c'è un newline. Questo viene emesso in output!! Quindi il sorgente traslato in Java diventa:
       ......
        out.write(dip.getMatricola()+dip.getNome()+dip.getCognome());
        out.write("\r\n");
    }
    out.write("\r\n");
    else
    out.write("\r\n");
    System.out.println("Elemento non trovato.");
    Ovviamente è codice Java tutto "sballato".

    Soluzione:

    <% } else { %>
    <% System.out.println("Elemento non trovato."); %>
    <% } %>

    O magari tutto con un singolo scriplet.
    E comunque, se potessi evitare scriptlet Java .... sarebbe ancora meglio!
  • Re: Syntax error on token "else", delete this token.

    Salve andbin, non sapevo che una parentesi graffa non può stare da sola in uno scriptlet. Comunque sto facendo un corso per analista programmatore java, le basi le devo ancora costruire. Quindi non sapevo che le JSP vengono trasformate nel sorgente Java di una Servlet e che poi questo sorgente viene compilato. Comunque a me mi hanno insegnato ad usare gli scriptlet per stampare la risposta all'utente.
  • Re: Syntax error on token "else", delete this token.

    mark13 ha scritto:


    non sapevo che una parentesi graffa non può stare da sola in uno scriptlet.
    Il problema non è tanto la graffa "da sola". Il problema è la eventuale parte di pagina che sta in mezzo!! (tra } e else) Che magari non la "vedi" ma se c'è anche solo un newline .. conta!
  • Re: Syntax error on token "else", delete this token.

    Ho fatto come mi hai detto: [CODE] <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="pkg1.Anagrafica" %> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Esito Ricerca</title> </head> <body> <center> <%--il metodo getAttribute restituisce valori di tipo Object --%> <%String ricerca=(String)request.getAttribute("ricerca");%> <%if(ricerca=="trovato"){%> <%Anagrafica dip=(Anagrafica)request.getAttribute("dip");%> <%System.out.println(dip.getMatricola()+" "+dip.getNome()+" "+dip.getCognome());%> <%}else{%> <%System.out.println("elemento non trovato");%> <%}%> </center> </body> </html> Adesso però mi da un nuovo errore: Syntax error on token ")", delete this token.
  • Re: Syntax error on token "else", delete this token.

    Salve, ho risolto il problema. Praticamente ho cancellato e riscritto la parte di codice dove è presente "else":
    [CODE] %}else{%> <%System.out.println("elemento non trovato");%> <%}%>
Devi accedere o registrarti per scrivere nel forum
5 risposte