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

时间:2014-01-15 20:30:27

标签: xpages

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

昨天我开始创建由应用中的状态事件触发的电子邮件。在电子邮件中,我可以包含指向相关文档的直接链接。如果您已经过身份验证,则直接链接可以正常工作,如果不是,则会将您带到登录页面(应该如此)。登录后,它会将您带到HomeAfterLogin而不是您链接到的文档。当我构建那个部分时,我没想到我会直接链接到文档。我的登录过程主要基于Ferry Kranenburg的项目。

我的问题是,我从哪里可以从电子邮件中获取调用URL,或者用户是否正好为文档添加书签。我已经尝试了context.getUrl()但它只返回登录页面的URL。如果我知道如何获取调用URL,我应该能够计算重定向的属性。


UPDATE:facesContext.getExternalContext()....似乎只返回当前的URL,而不是调用URL。


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

1 个答案:

答案 0 :(得分:0)

无法访问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事件重定向到login XPage之前,我将此设置从URL固定到sessionScope变量。

在确定登录后重定向位置的自定义属性中,我添加了一个if语句,如果sessionScope变量存在,它将重定向到特定文档。否则,请正常进入HomeAfterLogin。

if(sessionScope.URL_document == ""){
facesContext.getExternalContext().getRequestContextPath() + "/HomeAfterLogin.xsp"
} else {
    facesContext.getExternalContext().getRequestContextPath() + "/New_PO.xsp?doc=" + sessionScope.URL_document;
}

这解决了我的问题。