jsf - JSF 中的条件重定向

标签 jsf redirect

是否有内置机制可以有条件地重定向到另一个 View ?如果他/她已经登录,我希望用户从登录页面重定向到“主页”。

我已经有两种基本方法,但对于第一种我不知道如何实现,第二种是一种肮脏的解决方法。

  • 添加 <meta http-equiv="Refresh" content="0; URL=home.jsf" />并让它有条件地呈现(EL:#{login.loggedIn})
  • 添加 <h:panelGroup />这也将有条件地呈现,包含一些执行重定向的 JavaScript。

  • 有没有办法实现一个甚至另一个更优雅的解决方案? :-)

    谢谢

    最佳答案

    您可以使用 <f:event type="preRenderView"> 为此。

    例如

    <f:event type="preRenderView" listener="#{login.checkAlreadyLoggedin}" />
    


    public void checkAlreadyLoggedin() throws IOException {
        if (isLoggedIn()) {
            ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
            ec.redirect(ec.getRequestContextPath() + "/home.xhtml");
        }
    }
    

    关于jsf - JSF 中的条件重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399045/

    相关文章:

    javascript - JSF:Javascript google map API - 标记获得相同的标题

    java - 在构造函数或 @PostConstruct 方法中设置消息 - 可能吗?

    redirect - 登录重定向后 yii2 丢失用户身份

    django - 使用基于类的 View 包含类别 slug 和帖子 slug 的 URL

    jsf - java.lang.IllegalArgumentException : null source

    java - Netbeans 警告 pom.xml 中 "http://download.java.net/maven/2"的黑名单存储库声明。如何解决?

    jsf - javax.faces.DEFAULT_SUFFIX 不起作用

    java - 安卓代理应用程序

    ruby-on-rails - 如何重定向到页面中的特定位置?

    apache - 使用 htaccess 从一个 URL 重定向到另一个 URL