我有这个 PhaseListener,它检查用户在恢复 View 后是否仍然登录。如果 session 已过期,那么我希望整个表单重定向到/login.jsf 页面,但它只重定向其中的 iframe。
基本上,这是我在 afterPhase() 方法中的代码:
if (isWebUserLogonOk(session)) {
NavigationHandler nh = faces.getApplication.getNavigationHandler();
nh.handleNavigation(faces, null, "loggedoff");
}
loggedoff 是一个带你到 login.jsp 页面的导航案例。
重定向按预期完成,但在这种特殊情况下,我希望它针对整个表单而不是 iframe 完成(JSF 菜鸟在这里说话)。
最佳答案
如果您不想在 iFrame 中显示一个页面(例如登录页面),一个 javascript framekiller应该解决这个问题。
将以下代码添加到您的登录页面 head
中,然后重试:
<script type="text/javascript">
if(top != self) top.location.replace(location);
</script>
它很容易将当前页面重新加载为首页。
希望对你有帮助
关于java - JSF Phase Listener 重定向表单不是 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21006840/