У меня был JSP-файл с тегом ac: redirect, который перенаправлял пользователя на другую страницу.
<!-- 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. Почему это изменение вызывает исключение, особенно учитывая, что задействованные строки - редирект, а не экземпляры измененного / связанного класса - вызывают проблему?
Внутренние изменения былисделал соответственно, ссылаясь на свойство в моем новом «обобщенном» классе, чтобы удовлетворить старую функциональность.Я знаю, что это работает, потому что все связанные функции, помимо того, о чем я пишу, работают.
Исследования онлайн указывают: - Я не могу перенаправить / переслать после того, как представление уже было отправлено.Тогда как я смог сделать это раньше?- Попытка очистить уже очищенный буфер вызывает это.Что изменилось, что делает его очищенным сейчас, в отличие от более старой (первой) реализации?- Размер буфера страницы должен быть больше.Это то, чего я не понимаю, и мне очень хотелось бы, чтобы сообщество стекопотока обратилось к нему;Я вижу, что мой новый класс вызывает изменения размера, которые потребуют изменений.
------- ДРУГОЙ ОТВЕТ!-------
Прежде всего, ВСЕГДА УСТАНАВЛИВАЙТЕ СИТУАЦИЮ В КОДЕКЕ, как описано отмеченным ответом.Однако ... если вы застряли и не хотите этого делать, вот быстрое решение: javascript!
<script type="text/javascript">
location='./yourPageToGoTo.html'
</script>