Изменить заголовок в Включенной JSP с Spring MVC - PullRequest
1 голос
/ 29 сентября 2011

Это очень интересно для меня, но у меня есть простое приложение Spring MVC и страница JSP. На страницах Jsp , которые включены , я хотел бы добавить cookie в свое приложение. Однако, несмотря на настройку, он не мог разрешиться во время выполнения.

это код на моей включенной странице jsp.

   <% response.addCookie(new Cookie("test3","test3")); %>

Я предпочитаю писать некоторые части нашего приложения на уровне jsp, чем писать на контроллере.

Что я могу просто сказать, так это то, что я использую Tuckey UrlRewrite и вместо моих страниц jsp, когда я вызываю свой метод, он работает нормально. И в моем вызванном методе я вижу, что исходный объект ответа на моем контроллере MVC обернут другим объектом HttpServletResponse. Кажется, что заголовки и файлы cookie не могут быть изменены после пересылки в jsp?

Любая помощь?

PS: я обновил свой вопрос, чтобы прояснить, что это jsp включена страница.

1 Ответ

1 голос
/ 29 сентября 2011

JSP является частью ответа. Вы должны убедиться, что эта строка находится в состоянии до ответа. В противном случае вы получите IllegalStateException: response already committed в журналах сервера. Поэтому поместите его в самую верхнюю часть страницы JSP, за до любой HTML-код будет отправлен в ответ. Или, лучше, просто поместите его в контроллер Spring, сервлет или фильтр задолго до того, как произойдет пересылка в JSP.

Вам также необходимо убедиться, что вы не изменяете ответ внутри файла JSP, который включен в <jsp:include>. Это будет просто проигнорировано. См. Также RequestDispatcher#include() Javadoc:

Объект ServletResponse имеет свои элементы пути, и параметры остаются неизменными по сравнению с вызывающей стороной. Включенный сервлет не может изменить код состояния ответа или установить заголовки; любая попытка внести изменения игнорируется .

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