Redirección de jsp: include page
-
20-09-2019 - |
Pregunta
Quiero que el usuario sea redirigido a login.jsp si el "papel" almacenado en el ámbito de sesión no coincide con el parámetro de petición "accessRole"
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>
El código anterior no realiza la redirección como se esperaba.
He intentado utilizar redirección de ExternalContext () y jsp: forward en lugar de
Solución
No se puede redirigir el interior de un JSP incluyen, a menudo es demasiado tarde. Si ha leído los registros de servidor de aplicaciones, usted debe haber visto un IllegalStateException: response already committed
(sólo porque el contenido de la página principal ya está sido enviado a la respuesta).
La verdadera solución para esto es poner en práctica un Filter
que es mapeado en el url-pattern
que cubre la página principal.
Otros consejos
JSP incluye no están permitidos para enviar una redirección. Vas a tener que utilizar:
<jsp:include.directive file="url"/>