通过bean从一个war导航到另一个JSF

Navigate from one war to another JSF through bean

我的一个 EAR 有 3 个 war。 一旦用户单击页面中的 link,控制就会转到 bean,业务逻辑决定用户将被导航到哪里。结果页面可以在三个 war 中的任何一个。

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

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

<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>

但是这个导航仅限于单个页面之间的导航war。

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

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

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

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

如果还有其他需要,请告诉我。

谢谢

您不能使用 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);