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
答案 0 :(得分:1)
是的,dominoDocument和dominoView的范围是请求,因为来自OpenNTF的Mark Leusink的调试工具栏确认了这一点。
如果要使用数据源,可能更容易避免使用托管属性。您仍然可以将数据源添加到页面,但可以通过async-appender
访问它或从其容器向下导航到该页面。或者,您可以使用文档UNID,表单等的托管属性,并在bean的构造函数中或在getter中检查null之后实例化ExtLibUtil.resolveVariable(ExtLibUtil.getXspContext().getFacesContext(), "document1");
。
答案 1 :(得分:1)
数据源对象将始终位于请求范围内。您要更改的是数据源的数据容器的行为,默认情况下位于视图范围内。
使用调试工具栏时,您可以看到行为:即使您将数据源的范围设置为应用程序范围,您仍然可以在请求范围中找到数据源。但您也会在应用程序范围内找到 DominoDocumentDataContainer 实例。
如果您将范围设置为 request ,则数据容器也位于请求范围内。这就是"文件上传技巧的原因"的工作原理。