Атрибуты запроса в контексте импорта c: - PullRequest
0 голосов
/ 23 ноября 2010

Я работаю над jsp (test.jsp) в веб-приложении с контекстом сервлета / hello.Я делаю следующее:

<c:import url = "/other/altTest.jsp" context="/" />

Кажется, что атрибуты запроса, доступные для test.jsp, недоступны для импортированного jsp из c: import (altTest.jsp), я подозреваю, из-за параметра context.Может кто-нибудь объяснить причину этого, а также предложить альтернативный метод импорта jsp, где я мог бы получить доступ к атрибутам запроса?

1 Ответ

3 голосов
/ 23 ноября 2010

c:import запускает под прикрытием новый и независимый HTTP-запрос. Даже если файл находится в том же контексте, он не будет иметь доступа к тому же запросу, с которым был открыт родительский JSP.

Лучше всего передать информацию в качестве параметра запроса или сохранить в качестве атрибута сеанса, а затем разрешить импортированной JSP удалить ее из сеанса. Тем не менее, это требует, чтобы разные контексты совместно использовали один и тот же сеанс - это настраивается на уровне контейнеров сервлетов, например, для Tomcat, установите атрибут emptySessionPath на true в context.xml.

Вместо этого можно использовать сервлет, вместо которого можно сделать ServletContext#getContext() для получения другого контекста сервлета (только если для атрибута crossContext установлено значение true в context.xml), а затем получить RequestDispatcher и, наконец, вызвать forward() на нем. Это невозможно по тегам JSP.

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