【问题标题】:Navigate from one war to another JSF through bean通过 bean 从一场战争导航到另一场 JSF
【发布时间】:2015-03-19 16:19:19
【问题描述】:

我在一个 EAR 中有 3 场战争。 一旦用户单击页面中的链接,控制权就交给 bean,业务逻辑决定用户将被导航到哪里。结果页面可以是三战中的任何一个。

我还需要请求 URL,以便在用户决定单击取消链接时将其导航回请求页面。

我可以通过在 faces-config.xml 中定义导航来使用 JSF 进行导航 例如:

<from-view-id>/GeneralInfo.xhtml</from-view-id>
        <navigation-case>
            <from-action>#{registrationBean.goToLogin}</from-action>
            <from-outcome>Success</from-outcome>
            <to-view-id>/LoginInfo.xhtml</to-view-id>
        </navigation-case>

但是这种导航仅限于单个战争中页面之间的导航。

第二个选项是使用面部重定向,它甚至可以在第 3 方服务器 URL 上重定向 例如:FacesContext.getCurrentInstance().getExternalContext().redirect('login.xhtml')

使用第二个选项我无法使用以下代码检索请求 URL

FacesContext.getCurrentInstance().getExternalContext().getRequest().getRequestURL();

我的问题是,他们是否有任何第三个选项,我可以在其中导航到页面进入另一场战争(具有 JSF 配置)并且还可以获得请求 URL。

如果还需要什么,请告诉我。

谢谢

【问题讨论】:

  • 你的问题是什么?

标签: jsf-2 java-ee-6 myfaces


【解决方案1】:

您不能使用 JSF 导航案例转到不同应用程序上下文中的页面。所以发送重定向是唯一的选择。如果您想与重定向一起传递其他参数,请将它们作为请求查询字符串参数传递:

String from = request.getRequestURL().toString();
externalContext.redirect("/othercontext/login.xhtml?from=" + URLEncoder.encode(from, "UTF-8"));

然后其他应用程序可以重定向回来,如下所示:

String from = request.getParameter("from");
externalContext.redirect(from);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2015-04-08
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多