从jsp:include页面重定向

时间:2009-12-21 12:04:21

标签: jsp redirect jstl jsp-tags jspinclude

如果存储在会话范围中的“角色”与请求参数“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;,但没有任何效果。

2 个答案:

答案 0 :(得分:0)

你不能在JSP包含内部重定向,它通常已经太晚了。如果您已阅读appserver日志,则应该看到IllegalStateException: response already committed(仅因为父页面的内容已经发送到响应中)。

真正的解决方案是实现覆盖父页面的Filter映射的url-pattern

答案 1 :(得分:0)

JSP包含允许发送重定向。你必须使用:

<jsp:include.directive file="url"/>