XPages数据源的默认范围(xp:dominoDocument和xp:dominoView)

时间:2015-05-27 11:30:58

标签: xpages

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

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

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

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

  

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

2 个答案:

答案 0 :(得分:1)

是的,dominoDocument和dominoView的范围是请求,因为来自OpenNTF的Mark Leusink的调试工具栏确认了这一点。 Debug Toolbar

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

答案 1 :(得分:1)

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

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

如果您将范围设置为 request ,则数据容器也位于请求范围内。这就是"文件上传技巧的原因"的工作原理。