我应该能够在sessionScope变量中传递NotesDocumentCollection吗?

时间:2014-02-07 21:11:48

标签: xpages

我有一个页面可以进行NotesDatabase搜索,当然还有一个集合。我将该集合存储在sessionScope变量中并调用一个页面,其中显示结果。

if ( collection1.getCount() == 0)
{
    displayErrorMsg("Your search returned zero results. Please try another search.",getClientId("title"), "Zero Results");
}
else
{

    sessionScope.put("searchResults",collection1);
    var extCont = facesContext.getExternalContext();
    extCont.redirect("xp_vwIssueSearchResults.xsp");

}

该页面有一个数据表,其中包含范围变量的内容,因为它是数据源:

sessionScope.get("searchResults");

当我调用此页面时,我得到了,NotesException:Object已被删除或回收。

我是否可以在sessionScope变量中传递NotesDocumentCollection?我对解决方法有一些想法,但传递NotesDocumentCollection肯定会很好。

1 个答案:

答案 0 :(得分:3)

您不能将Notes对象(如视图,文档,集合)保留更长时间。通常,您应该以某种方式使用Notes对象,以便保存您在某处感兴趣的数据并立即回收(=销毁)Notes对象。原因是Domino服务器无法在两个请求之间为您保存Notes对象,因为Notes对象不可序列化(可序列化=能够将对象保存在磁盘上并将其还原回内存)。

在您的情况下,您可以保存

  • 搜索查询或
  • 结果值为对象数组(JavaScript)或地图列表(Java)或
  • 文档集合文档的documentUniqueIDs
在您的sessionScope变量中

并在重定向的页面中使用它们。