2010-11-23 2 views
0

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

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

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

ответ

3

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

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

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

Смежные вопросы