【问题标题】:Default Scope of XPages Data Sources (xp:dominoDocument and xp:dominoView)XPages 数据源的默认范围(xp:dominoDocument 和 xp:dominoView)
【发布时间】:2015-05-27 11:30:57
【问题描述】:

xp:dominoDocument数据源的默认范围是什么?

Sven Hasselbach 发布了另一个问题的答案,他说您必须将数据源的范围设置为 request 范围,他的答案解决了问题How can I refresh the XPages File Download Control and have it display updated attachments without full page refresh?

我对@9​​87654324@ 数据源的默认范围的经验是,默认范围是request 范围。我正在使用托管 bean 和托管属性。当我将 xp:dominoDocument 数据源作为托管属性注入托管 bean 时,我必须将此托管 bean 的范围设置为 request 范围。

否则(例如,托管 bean 范围设置为 view)我收到以下错误:

27.05.2015 13:04:55 HTTP JVM:无法创建 Managedbean fileUploadHandler 引用对象的范围: '#{currentDocument}' 比引用对象短。更多 详细信息,请查阅 error-log-0.xml 位于 d:/Lotus/Domino/d

【问题讨论】:

  • 您将 dominoDocument 与托管 bean 一起使用是否有原因?根据我的经验,我通常使用 bean 来完全替代使用文档的需要。只是好奇。谢谢
  • @David:感谢您的回答,我也在以您的方式使用 bean。通过 bean 示例,我想表明默认范围是请求范围。对我来说,在这种情况下,有趣的一点是,当我们将范围显式设置为 request if 显然是默认范围时,为什么我们对 xp:dominoDocument 数据源有不同的行为(请参阅上面的问题链接和 Sven Hasselbach 的以下回答)数据源是请求范围(参见 Paul Stephen Withers 的回答)?

标签: xpages


【解决方案1】:

是的,dominoDocument 和 dominoView 的范围是请求,正如 OpenNTF 的 Mark Leusink 的调试工具栏所证实的那样。

如果您想使用数据源,避免使用托管属性可能更容易。您仍然可以将数据源添加到页面,但通过ExtLibUtil.resolveVariable(ExtLibUtil.getXspContext().getFacesContext(), "document1"); 访问它或从其容器向下导航到它。或者,您可以为文档 UNID、表单等使用托管属性,并在 bean 的构造函数中或在 getter 中检查 null 之后实例化 com.ibm.xsp.model.domino.DominoDocumentData

【讨论】:

  • 感谢您的回答
【解决方案2】:

数据源对象将始终位于请求范围内。您正在更改的是数据源的数据容器的行为,默认情况下在视图范围内。

使用调试工具栏时,您可以看到行为:即使您将数据源的范围设置为应用程序范围,您仍然可以在请求范围内找到数据源。但您也会在应用程序范围内找到一个 DominoDocumentDataContainer 实例。

如果将范围设置为request,则数据容器也在请求范围内。这就是“文件上传技巧”起作用的原因。

【讨论】:

  • 感谢您的回答。现在我明白了。你知道你的“文件上传技巧”的一些副作用(性能等)吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 2018-06-28
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
相关资源
最近更新 更多