Xpages bean vs对象数据

Erm*_*rmo 3 objectdatasource javabeans xpages

有什么不同?我什么时候应该更喜欢一个?

以及与此相关的一些小问题:

  • 如果我有对象数据,什么时候调用saveObject?

  • 它看起来像垃圾收集器回收所有我的多米诺手柄.我试图向下转换然后克隆它,但它没有帮助(它怎么知道它仍然是一个多米诺骨牌对象?).有解决方法吗?

  • 如果我从xPages创建"var tmpVar = new package.TestClass()",它会在更新时被回收.但是,如果我从bean创建java对象,它就会停留在那里.正确?

Pau*_*ers 5

托管bean正是由XPage运行时管理的.它们是在第一次呼叫时创建的.虽然它们有一个空构造函数,但faces-config中的managed-properties元素允许您定义值(我相信您可以将SSJS代码添加到faces-config以计算值).

对象数据源允许您处理创建时的内容,这意味着它们的范围可以缩小到比viewScope更小的级别 - 面板或自定义控件.SaveObject方法由Save All Datasources事件调用.实际上,如果您正在编写对象数据源,您将编写一个按钮并调用相关方法,而不是使用简单的操作.

Java变量可以被回收,但Domino对象只能通过两种方法进行回收.第一个是调用recycle()方法,第二个是在每个请求结束时,当会话被回收时.因为recycle()调用回收所有子元素,所以一切都在请求结束时被回收.这就是为什么您不能将Domino对象存储在作用域变量或任何其他持久对象(即bean)中的原因.请注意,DateTimes,RichTextStyles等对象是会话的子对象,而不是像NotesItem或NotesRichTextItem那样的任何粒度Domino对象.

var tmpVar = new package.TestClass()如果你将tmpVar存储在某个地方,它将只会持续超出当前请求.如果您在crerateObject方法中使用该代码,return tmpVar则会将该TestClass实例传递给数据对象.