2009-12-21 4 views
0

Я хочу, чтобы пользователь будет перенаправлен на Login.jsp, если «роль» хранится в сессии Scope не совпадает с запросом параметра «accessRole»Перенаправление из JSP: включить страницу

HomePage.jsp

<jsp:include page="Header.jsp"> 
<jsp:param value="d" name="accessRole" /> 
</jsp:include> 

Header.jsp

<c:if test="${sessionScope.role!=param.accessRole}"> 
<c:redirect url="Login.jsp"/> 
</c:if> 

Приведенный выше код не выполняет перенаправление, как ожидалось.

Я попытался использовать перенаправление ExternalContext() и jsp: вперед вместо < c: redirect >, но ничего не работает.

ответ

0

Вы не можете переадресовать внутри JSP, это часто уже слишком поздно. Если вы прочитали журналы приложений, вы должны были увидеть IllegalStateException: response already committed (только потому, что содержимое родительской страницы уже отправлено в ответ).

Реальное решение для этого - реализовать Filter, который отображается на url-pattern, охватывающий родительскую страницу.

+0

Это меня заставляет задуматься. «» был предоставлен по какой-то причине, и все же он кажется мне чрезвычайно ограниченным. – skaffman

+0

Возможно, вам повезло с ним в первом 2 Кбайт ответа (т. Е. На верхней части родительской страницы JSP). Но на самом деле это несколько лишнее, я никогда не использовал его. – BalusC

+0

Я использую JSF, а не JSP. Есть ли учебник по использованию фильтров с JSF ..? – TheLameProgrammer

0

JSP включает в себя: разрешено отправить перенаправление. Вы должны будете использовать:

<jsp:include.directive file="url"/> 
Смежные вопросы