2011-11-05 16 views
5
<%@ page import="java.util.*" %> 
<html> 
<body> 
<h1 align="center">blablalblalblab</h1> 
<p> 
<% 
List styles = (List)request.getAttribute("styles"); 
Iterator it = styles.iterator(); 
while(it.hasNext()) { 
    out.print("<br>try: " + it.next()); 
} 
%> 
</p> 
</body> 
</html> 

dopo aver eseguito la mia richiesta servlet sto errore ottenendoeccezione JSP, "simbolo quote previsto"

org.apache.jasper.JasperException: /result.jsp (riga: 1, colonna: 18) citazione simbolo atteso org.apache.jasper.compiler.DefaultErrorHandler.jspError (DefaultErrorHandler.java:42)

non riesce a trovare le virgolette che non si trovano nel posto giusto.

+1

Penso che in realtà non stai eseguendo il codice che hai nella tua domanda. – BalusC

+0

@axtavt ha avuto la risposta giusta per me! usa le virgolette semplici e quelle non curve. –

risposta

5

Non utilizzare Java in JSP, per favore. Ecco a cosa serve la libreria di tag standard.

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

<html> 
<body> 
<h1 align="center">blablalblalblab</h1> 
<p> 
    <c:forEach items="${styles}" var="style"> 
    <br>try: ${style} 
    </c:forEach> 
</p> 
</body> 
</html> 

Più in dettaglio:

  1. codice Java Embedding in una JSP rende la pagina di difficile lettura (JSP è un linguaggio tag-oriented), difficile da mantenere, e difficili da eseguire il debug.
  2. Le librerie di tag standard sono già debuggate, hanno una documentazione ed esempi abbondanti e probabilmente già fanno ciò che volete.
  3. Se si dispone effettivamente di una logica che deve essere eseguita in Java e non esistono tag preesistenti, è possibile a) inserire la logica in un bean e chiamarla tramite JSTL o b) scrivere il proprio tag utilizzando tagfile.

Perché il codice Java è migliore in una libreria di bean o tag rispetto a un JSP?

  1. test è un fattore importante: i fagioli e le librerie di tag possono essere testati al di fuori di un ambiente servlet in esecuzione con facilità.
  2. Le librerie di tag sono riutilizzabili e significativamente più pulite di quelle JSP.
+7

prova a rispondere alla domanda invece di ostacolare l'OP. – bmargulies

+0

A volte la risposta a una domanda non è una risposta diretta. Avrà molto più successo con un metodo JSTL per iterare un elenco in un JSP. –

+2

@bmargulies Non so voi, ma se facessi qualcosa che è stata considerata una cattiva pratica per anni, preferirei saperlo, anche se non fosse una risposta alla mia domanda diretta. A volte non so abbastanza per sapere cosa chiedere, o se c'è un modo migliore, più canonico per farlo. –

5

Assicurarsi che tutte le virgolette siano virgolette semplici e non curvilinee.

+0

Potrebbe essere qualcosa per questo. La prima citazione sembra essere nella colonna 17, ma forse il file ha una codifica strana o qualcosa del genere. Sarebbe interessante guardare un dump esadecimale del file. – erickson

+0

Questa è la risposta corretta per me! Sto solo facendo un tutorial e l'altra risposta non ha senso con così poca conoscenza. Questo ha funzionato per me. –

1

Il tuo JSP funziona perfettamente con Tomcat 6. Quindi, probabilmente è un problema relativo alle inclusioni o alcune classi precedentemente compilate non vengono ricompilate.

Provare a pulire la directory di lavoro Tomcat e riprovare.

2

Immagino di avere copia incollata da qualche parte, assicurarsi che le doppie virgolette siano corrette. Ho avuto lo stesso problema quando l'ho copiato da un PDF, è stato risolto una volta che ho corretto le mie doppie virgolette.

0

Mentre concordo con l'ammonizione di Scott A di usare JSTL invece di mettere Java direttamente nella JSP, la domanda merita di essere esplorata un po 'oltre. L'ho appena incontrato per la prima volta e ho dovuto scavare un po 'per rispondere.

Tecnicamente l'errore indica quello che dice. Ti mancano alcune citazioni da qualche parte. Il più semplice sarebbe qualcosa di simile nel tuo tag h1 se leggesse:
< h1 align = center >
invece di quello che hai.
< h1 align = "center" >

Ovviamente non c'è nulla nel frammento di codice che si è incollato che manca citazioni quindi vorrei esplorare un paio di cose.

In primo luogo, che aspetto ha l'output di it.next()? Dato che stai inserendo una lista chiamata stili, mi chiedo se qualcosa lì dentro stia facendo credere a jasper che si tratta di un tag di stile invece del testo che stai cercando di renderizzare.

In secondo luogo, vorrei esplorare la risposta di Pradeep e vedere se ci sono alcuni problemi di incollaggio che sono stati risolti quando è stato incollato qui su StackOverflow. Nello specifico, cercherò "citazioni intelligenti". IE molti editor di testo (incluso Outlook e la maggior parte degli uffici) amano utilizzare diverse virgolette sul fronte e sul retro del testo citato. 'Il testo questo è citato' IE


diventa
`questa è citato testo'

che può essere difficile da notare.

Problemi correlati