2012-02-23 34 views
4

我从来没有使用数据上下文中XPages和想知道的好处,在xPages中使用数据上下文有什么好处?

如果我想回到记忆中我常说的SSJS scriptlibrary,我相信也存储在记忆功能的东西。

所以我们假设我在ssjs中有一个返回notesdocument的函数,这个函数可能会从我的xpage的几个地方调用。在这种情况下,数据上下文在regrards中有利于在ssjs脚本库中具有函数。

回答

7

dataContexts可以被认为是全局变量。与SSJS功能相比的优点是:

1)dataContext运行SSJS/Java /无论返回值。对dataContext的引用使用EL(例如#{myVar}),与数据源相同。所以我的理解是EL会获得价值,而不是每次都运行SSJS/Java代码。所以这里有一个性能优势。

2)dataContext的值可以动态计算或在页面加载时计算。因此,您可以使用$ {javascript:@Today()}并运行一次,而不是每次运行一个函数。

我怀疑还有一个性能优势,因为对dataContexts的引用使用EL。所以在引用中,你不需要运行SSJS,所以它不需要通过SSJS解析器。

dataContexts的额外好处是它们可以被限制到数据源可以使用的任何级别 - 所以XPage,Custom Control或Panel。这使他们比viewScope更具优势。所以youo也可以在重复控制的面板中设置dataContext,以避免多次引用NotesDocument的字段或字段连接。

我倾向于避免在dataContexts中存储Domino对象,这主要是因为回收的内在风险。我不知道是否有问题,我'

+0

在使用datacontexts时回收多米诺文档有什么问题吗?我并不真正意识到这一点。我知道你不应该因为回收调用而自行缓存多米诺骨牌对象,但datacontexts应该能够解决这个问题吗? – jjtbsomhorst 2012-02-23 14:46:57

+0

从最近的讨论中,dataContext的输出仅在其容器(XPage,自定义控件或面板)正在收集和呈现时可用。一旦完成,对象就会被回收。 因此,如果将dataContext绑定到页面加载时计算的Domino对象,然后在部分刷新期间尝试访问它,您可能会遇到问题。 但是,只要dataContext内容是动态计算的,因为它将保存所有相关代码来检索Domino对象,所以不应该有问题。当然,dataContext将被重新部分刷新。 – 2012-03-02 23:32:20

1

@Withers:#{MyVar}当我在dblookup中使用我的DataContext变量#{DataStoreDbName}时发现无效:(但是我确实发现了你的帖子威瑟斯宝贵先生)

这些没有工作

#{DataStoreDbName} 
@Sum(@DbLookup("#{DataStoreDbName}","personnelbudget",compositeData.catid,10)) 

#{id:DataStoreDbName} 
@Sum(@DbLookup("#{id:DataStoreDbName}","personnelbudget",compositeData.catid,10)) 

这没有工作

我喜欢的方式DataContext的VAR的在输入DataContext的控件的“属性”选项卡的“数据”部分的DataSources列表中显示。

  1. 开始与定义的DataContext: VAR = DataStoreDbName
  2. 这个数据上下文变量是服务器的外部数据库:DB,我正在使用@ DbLookup的。

    DataStoreDbName” 变量名现在显示了在数据段下的数据来源:

  3. 这是DbLookup我在使用的DataContext: @Sum(@DbLookup(DataStoreDbName “personnelbudget”,compositeData.catid,10))

enter image description here

  • 上面是另一个DataConext(显然)的例子,但是这里是变量名称在字段或隐藏字段的customCoverters中的计算中使用的方式(这使得隐藏字段在Notes中充当计算字段)。 *注意@Text()的总和以避免发生错误。
  • enter image description here

    的< XP:文本>只显示DataContext的变量值,而 的< XP:inputHidden>使用在customCoverter DataContext的变量值来存储/坚持上提交值/保存。

    相关问题