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

时间:2015-01-21 08:04:11

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

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

此外,我还需要请求网址,以便我们可以在用户决定点击取消链接时将其导航回请求页面。

我可以通过在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>

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

第二个选项是使用面部重定向,即使在第三方服务器网址上也可以重定向 例如:FacesContext.getCurrentInstance().getExternalContext().redirect('login.xhtml')

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

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

我的问题是,他们的第三个选项是我可以导航到另一个战争的页面(有JSF配置),也可以获得请求URL。

如果需要其他任何内容,请告诉我。

谢谢

1 个答案:

答案 0 :(得分: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);