Redirection de jsp: include la page
-
20-09-2019 - |
Question
Je veux que l'utilisateur soit redirigé vers Login.jsp si le « rôle » stocké dans la session Champ d'application ne correspond pas à la demande du paramètre « 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>
Le code ci-dessus ne fonctionne pas la redirection comme prévu.
J'ai essayé d'utiliser la redirection de ExternalContext () et jsp: en avant la place de
La solution
Vous ne pouvez pas rediriger dans une JSP comprennent, il est souvent déjà trop tard. Si vous avez lu les journaux appserver, vous auriez dû voir un IllegalStateException: response already committed
(juste parce que le contenu de la page parent est déjà envoyé à la réponse).
La vraie solution pour cela est de mettre en œuvre un Filter
qui est mis en correspondance sur la url-pattern
couvrant la page parent.
Autres conseils
JSP comprend ne sont pas autorisés pour envoyer une redirection. Vous devrez utiliser:
<jsp:include.directive file="url"/>