Redirecionamento do JSP: Incluir página
-
20-09-2019 - |
Pergunta
Quero que o usuário seja redirecionado para login.jsp se a "função" armazenada no escopo da sessão não corresponde ao parâmetro de solicitação "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>
O código acima não executa o redirecionamento conforme o esperado.
Eu tentei usar o Redirect () e JSP do ExternContext (para a frente no lugar deu003Cc:redirect> , mas nada funciona.
Solução
Você não pode redirecionar para dentro de um JSP incluir, muitas vezes já é tarde demais. Se você leu os logs do AppServer, deveria ter visto um IllegalStateException: response already committed
(Só porque o conteúdo da página pai já foi enviado para a resposta).
A solução real para isso é implementar um Filter
que é mapeado no url-pattern
cobrindo a página pai.
Outras dicas
JSP inclui não são permitido Para enviar um redirecionamento. Você terá que usar:
<jsp:include.directive file="url"/>