我有这个PhaseListener,用于在恢复视图后检查用户是否仍然登录。如果会话已过期,那么我希望整个表单重定向到/login.jsf页面,而只是重定向iframe。
基本上,这是我在afterPhase()方法中的代码:
if (isWebUserLogonOk(session)) {
NavigationHandler nh = faces.getApplication.getNavigationHandler();
nh.handleNavigation(faces, null, "loggedoff");
}
注销是一个导航案例,可以将您带到login.jsp页面。
重定向按预期完成,但在这种特殊情况下,我希望它可以用于整个表单,而不是iframe(JSF新手在这里说话)。
答案 0 :(得分:1)
如果您不想拥有iFrame中显示的网页(例如登录页面),则javascript framekiller应解决此问题。
将以下代码添加到您的登录页面head
中,然后重试:
<script type="text/javascript">
if(top != self) top.location.replace(location);
</script>
它可以轻松地将当前页面重新加载为首页。
希望它有所帮助...