如果存储在会话范围中的“角色”与请求参数“accessRole”不匹配,我希望将用户重定向到Login.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的redirect()和jsp:forward代替&lt; c:redirect&gt;,但没有任何效果。
答案 0 :(得分:0)
你不能在JSP包含内部重定向,它通常已经太晚了。如果您已阅读appserver日志,则应该看到IllegalStateException: response already committed
(仅因为父页面的内容已经发送到响应中)。
真正的解决方案是实现覆盖父页面的Filter
映射的url-pattern
。
答案 1 :(得分:0)
JSP包含允许发送重定向。你必须使用:
<jsp:include.directive file="url"/>