Исключение JSP, "ожидается символ кавычки" - PullRequest
5 голосов
/ 06 ноября 2011
<%@ 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>

после выполнения моего запроса сервлета я получаю сообщение об ошибке

org.apache.jasper.JasperException: /result.jsp (строка: 1, столбец: 18) ожидается символ кавычки org.apache.jasper.compiler.DefaultErrorHandler.jspError (DefaultErrorHandler.java:42)

не может найти кавычки, которые не находятся в нужном месте.

Ответы [ 5 ]

5 голосов
/ 06 ноября 2011

Убедитесь, что все ваши цитаты прямые, а не соблазнительные.

5 голосов
/ 06 ноября 2011

Не используйте Java в JSP, пожалуйста. Вот для чего предназначена стандартная библиотека тегов.

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

Более подробно:

  1. Встраивание кода Java в JSP затрудняет чтение страницы (JSP - это язык, ориентированный на теги), сложен в обслуживании и труден для отладки.
  2. Стандартные библиотеки тегов уже отлажены, имеют множество документации и примеров и, вероятно, уже делают то, что вы хотите сделать.
  3. Если у вас действительно есть какая-то логика, которую необходимо выполнить в Java, и ранее не существует существующих тегов, вы можете либо: а) поместить логику в bean-компонент и вызвать ее через JSTL, либо

Почему код Java лучше в библиотеке bean или тегов, чем в JSP?

  1. Важным фактором является тестирование: бины и библиотеки тегов могут быть протестированы вне работающей среды сервлетов с легкостью.
  2. Библиотеки тегов можно использовать повторно и значительно чище, чем в JSP.
2 голосов
/ 14 августа 2012

Я думаю, вы скопировали его откуда-то, убедитесь, что двойные кавычки правильные. У меня была такая же проблема, когда я скопировал ее из PDF, она была решена, когда я исправил свои двойные кавычки.

1 голос
/ 06 ноября 2011

Ваш JSP прекрасно работает с Tomcat 6. Так что, возможно, это либо проблема, связанная с включением, либо некоторые ранее скомпилированные классы не перекомпилируются.

Попробуйте очистить рабочий каталог Tomcat и повторите попытку.

0 голосов
/ 11 апреля 2013

Хотя я согласен с предупреждением Скотта А использовать JSTL вместо того, чтобы помещать Java непосредственно в JSP, вопрос заслуживает более глубокого изучения. Я сам впервые столкнулся с этим и мне пришлось немного покопаться, чтобы ответить.

Технически ошибка означает, что она говорит. Вы пропускаете некоторые цитаты где-то. Простейшим было бы что-то вроде в вашем теге h1, если бы он читал:


вместо того, что у вас есть.
Очевидно, что во вставленном вами фрагменте кода нет ничего, кроме пропущенных кавычек, поэтому я хотел бы изучить пару вещей. Во-первых, как выглядит вывод вашего it.next ()? Поскольку вы тянете список, называемый стилями, мне интересно, заставляет ли яшма думать, что это тег стиля вместо текста, который вы пытаетесь визуализировать. Во-вторых, я бы изучил ответ Прадипа и посмотрел, что если есть какая-то тонкая проблема с вставкой, которая была решена, когда вы вставили ее здесь в stackoverflow. В частности, я бы искал «умные кавычки» IE, которым многие текстовые редакторы (включая Outlook и большинство офисных) нравится использовать разные кавычки на передней и задней части цитируемого текста. IE 'это цитируемый текст'
становится
`это цитируемый текст ' , что может быть трудно заметить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...