Xpages 直接链接到文档,并在登录完成后使其工作

Xpages 直接链接到文档,并在登录完成后使其工作,xpages,Xpages,我有一个主页home.xsp,它将用户登录到我的应用程序中。身份验证成功后,它将转到HomeAfterLogin.xsp,这是应用程序的主页/登录页 昨天,我开始创建由应用程序中的状态事件触发的电子邮件。在电子邮件中,我可以直接链接到相关文档。如果您已经通过身份验证,那么直接链接就可以工作,如果没有,那么它将按照应该的方式访问登录页面。登录后,它会将您带到HomeAfterLogin,而不是链接到的文档。当我构建该部分时,我没有预料到我会直接链接到文档。我的登录过程主要基于Ferry Krane

我有一个主页home.xsp,它将用户登录到我的应用程序中。身份验证成功后,它将转到HomeAfterLogin.xsp,这是应用程序的主页/登录页

昨天,我开始创建由应用程序中的状态事件触发的电子邮件。在电子邮件中,我可以直接链接到相关文档。如果您已经通过身份验证,那么直接链接就可以工作,如果没有,那么它将按照应该的方式访问登录页面。登录后,它会将您带到HomeAfterLogin,而不是链接到的文档。当我构建该部分时,我没有预料到我会直接链接到文档。我的登录过程主要基于Ferry Kranenburg的一个项目

我的问题是,如果用户碰巧为文档添加了书签,我将从电子邮件中获取调用URL的位置。我尝试了context.getUrl,但它只返回登录页面的URL。如果我知道如何获取调用URL,我应该能够计算重定向到何处的属性

更新:facesContext.getExternalContext。。。。也似乎只是返回当前URL,而不是调用URL


第二个更新:我知道答案是什么。该URL已被重定向,无法再访问。直接链接到的XPage在beforePageLoad事件中包含代码,如果用户是匿名的,则可以重定向到登录页面。此时,我可以访问引用URL并将其存储在sessionScope变量中,然后在登录后重定向页面(如果变量存在)。如果这样做有效,我将回答我自己的问题。

无法访问URL的原因是页面已被重定向。直接链接到的XPage在beforePageLoad事件中包含代码,如果用户是匿名的,则可以重定向到登录页面

if(session.getEffectiveUserName() == "Anonymous"){
//if the PO document was accessed directly like from a Email link or bookmark
//then the doc id is set to a sessionScope variable and after the login page
//the page is directed to the specific PO instead of the HomeAfterLogin page
sessionScope.URL_document = context.getUrlParameter("doc");
context.redirectToPage("Home.xsp")
}
在同一beforePageLoad事件中,在重定向到登录XPage之前,我修复了从URL到sessionScope变量的docID设置

在决定登录后重定向到何处的自定义属性中,我添加了一个if语句,如果存在sessionScope变量,该语句将重定向到特定文档。否则,在正常登录后转到Home

if(sessionScope.URL_document == ""){
facesContext.getExternalContext().getRequestContextPath() + "/HomeAfterLogin.xsp"
} else {
    facesContext.getExternalContext().getRequestContextPath() + "/New_PO.xsp?doc=" + sessionScope.URL_document;
}
这为我解决了这个问题