2011-11-05 12 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> 

después de ejecutar mi petición de servlet que estoy error al obtenerJSP excepción, "símbolo cita de espera"

org.apache.jasper.JasperException: /result.jsp (línea 1, columna: 18) cita símbolo esperado org.apache.jasper.compiler.DefaultErrorHandler.jspError (DefaultErrorHandler.java:42)

no se encuentran las comillas que no se encuentran en el lugar correcto.

+1

Creo que en realidad no está ejecutando el código que tiene allí en su pregunta. – BalusC

+0

¡@axtavt tenía la respuesta correcta para mí! utilice citas rectas, no curvilíneas. –

Respuesta

5

No utilice Java en JSP, por favor. Para eso es la biblioteca de etiquetas estándar.

<%@ 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> 

En más detalle:

  1. código de incrustación de Java en un JSP hace que la página difícil de leer (JSP es un lenguaje orientado a tag-), difícil de mantener y difícil de depurar.
  2. Las bibliotecas de etiquetas estándar ya están depuradas, tienen abundante documentación y ejemplos, y probablemente ya hagan lo que usted quiere hacer.
  3. Si realmente tiene alguna lógica que debe realizarse en Java y no existen etiquetas preexistentes, puede a) poner la lógica en un bean y llamarlo a través de JSTL ob) escribir su propia etiqueta usando tagfiles.

¿Por qué es mejor el código de Java en una biblioteca de beans o etiquetas que en un JSP?

  1. La prueba es un factor importante: los frijoles y bibliotecas de etiquetas pueden ser probados fuera de un entorno de servlet se ejecuta con facilidad.
  2. Las bibliotecas de etiquetas son reutilizables y significativamente más limpias que JSP.
+7

intenta responder a la pregunta en lugar de molestar al OP. – bmargulies

+0

A veces la respuesta a una pregunta no es una respuesta directa. Tendrá mucho más éxito con un método JSTL para iterar una lista en un JSP. –

+2

@bmargulies No sé ustedes, pero si estaba haciendo algo que se ha considerado una mala práctica durante años, preferiría saberlo, incluso si no fuera una respuesta a mi pregunta directa. A veces no sé lo suficiente como para saber qué preguntar, o si hay una manera mejor y más canónica de hacerlo. –

5

Asegúrate de que todas las comillas sean citas rectas, no curvas.

+0

podría ser algo para esto. La primera cita parece estar en la columna 17, pero tal vez el archivo tiene una codificación extraña o algo así. Sería interesante mirar un volcado hexadecimal del archivo. – erickson

+0

¡Esta es la respuesta correcta para mí! Solo estoy haciendo un tutorial y la otra respuesta no tiene sentido con tan poco conocimiento. Esto funcionó para mí. –

1

Su JSP funciona bien con Tomcat 6. Por lo tanto, es probable que sea un problema relacionado con la inclusión o que algunas clases previamente compiladas no se vuelvan a compilar.

Trate de limpiar su directorio de trabajo Tomcat y vuelva a intentarlo.

2

Supongo que tiene una copia pegada desde algún lugar, asegúrese de que las comillas dobles sean las correctas. Tuve el mismo problema cuando lo copié de un PDF, se resolvió una vez que corregí mis comillas dobles.

0

Si bien estoy de acuerdo con la advertencia de Scott A de usar JSTL en lugar de poner Java directamente en el JSP, la pregunta merece ser explorada un poco más. Me encontré con esto por primera vez y tuve que cavar un poco para responderlo.

Técnicamente el error significa lo que dice. Te faltan algunas citas en alguna parte. El más simple sería algo así como en su etiqueta h1 si se lee:
< h1 align = center >
en lugar de lo que tiene.
< h1 align = "center" >

Obviamente no hay nada en el fragmento de código que ha pegado al que le falta comillas, así que me gustaría explorar un par de cosas.

Primero, ¿cómo se ve el resultado de it.next()? Ya que está escribiendo una lista llamada estilos, me pregunto si algo está haciendo que jaspe piense que es una etiqueta de estilo en lugar de texto que está tratando de procesar.

En segundo lugar, exploraría la respuesta de Pradeep y vería si hay algún problema al pegar contenido que se resolvió cuando lo pegó aquí en stackoverflow. Específicamente buscaría 'citas inteligentes'. Muchos editores de texto (incluyendo Outlook y la mayoría de las oficinas) prefieren usar diferentes citas en el anverso y reverso del texto citado. 'Texto presente se cita' IE


convierte
`esto es citado texto'

que pueden ser difíciles de detectar.

Cuestiones relacionadas