У меня был JSP-файл с тегом c: redirect, который пересылал бы пользователя по другой странице.Что может быть причиной этого несоответствия IllegalStateException в JSP/Spring?
<!-- Yes, I know this loop is probably unnecessary, but I'm not fluent in jsp and have determined it is not the problem. :) -->
<c:if test="${cmd.numberOfResults == 1}">
<c:forEach items="${cmd.matches}" var="someVar">
<c:redirect url="/loadThatResultInfo.html"/>
</c:forEach>
</c:if>
Старая реализация объекта команды нуждается в обновлении (где я вхожу). То, как я это делаю, - это создать общий объект «результат поиска», который содержит экземпляр этого старого объекта (пока). Я получаю этот экземпляр через свойство в этом обобщенном классе, так что мой код теперь это:
<c:if test="${cmd.genericSearchObject.numberOfResults == 1}">
<c:forEach items="${cmd.genericSearchObject.matches}" var="acct">
<jsp:forward page="/loadThatResultInfo.html"/> <!-- new try! -->
<c:redirect url="/loadThatResultInfo.html"/> <!-- old try... -->
<% response.sendRedirect("/loadThatResultInfo.html"); %> <! new try! -->
</c:forEach>
</c:if>
Каждый из этих трех попыток всего результат в IllegalStateExceptions некоторого рода. Почему это изменение вызывает исключение, особенно учитывая, что связанные строки - перенаправление, а не экземпляры измененных/связанных классов - вызывают проблему?
Соответствующие изменения были сделаны соответствующим образом, ссылаясь на свойство в моем новом охватывающем «универсальном» классе, чтобы удовлетворить старые функции. Я знаю, что это работает, потому что все связанные функции, помимо того, о чем я пишу, работают.
Исследования онлайн показывают: - Я не могу перенаправить/переслать после отправки. Тогда как я мог это сделать раньше? - Попытка очистить уже очищенный буфер вызывает это. Что изменилось, что делает его очищенным сейчас, в отличие от более старой (первой) реализации? - Размер буфера страницы должен быть больше. ЭТО - это тот, который я не понимаю, и мне очень понравится сообщество stackoverflow. Я вижу, как мой новый класс вызывает изменения размера, которые потребуются для изменения.
------- ДРУГОЙ ОТВЕТ! -------
Прежде всего, ВСЕГДА НАСТРОЙИТЕ СИТУАЦИЮ В КОДЕ, как описано отмеченным ответом. Однако ... если вы застряли и не хотите этого делать, вот быстро исправить: javascript!
<script type="text/javascript">
location='./yourPageToGoTo.html'
</script>
«IllegalStateExceptions of some sort» - не полезный отчет об ошибке. Трассировки стека и тексты исключений полезны, не игнорируйте их. – skaffman 2010-12-06 08:23:56