我在一个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。
如果需要其他任何内容,请告诉我。
谢谢
答案 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);