2014-10-22 69 views
3

有什么区别?我应该什么时候比另一个更喜欢?Xpages bean vs对象数据

而与此相关的一些小问题:

  • ,如果我有对象数据,当saveObject叫什么名字?

  • 它看起来像垃圾回收器回收我所有的多米诺骨牌手柄。我试图贬低,然后克隆它,但它没有帮助(它是如何知道它仍然是一个多米诺骨牌的对象?)。有没有解决方法?

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

回答

4

我在纯粹的托管豆与数据对象之间来回切换。我在一段时间内使用了很多数据对象,但后来遇到了JSF生命周期的一些问题,我认为我无法工作。不确定是否涉及重复或自定义控件。所以我现在几乎已经回去并且放弃了他们。

其他那个问题,我有我不知道有很多的差异。我认为dataObject可能会有点混乱。既然你可以在XPage上设置它,但是你可以将它的范围改变为我认为的会话或应用程序。但是如果你这样做,那么看起来更加混乱,很难找到然后在faces-config中制作bean。

我不确定你的问题的saveObject部分。

你绝对不想在bean或scoped变量中放置一个纯粹的多米诺骨牌对象,因为它们不是可序列化的,并且在某些时候会被垃圾收集器扔掉,这对你来说可能是最不方便的。

如果你只是做“var tmpVar = new package.TestClass()”,那么是的,因为变量的有限寿命,它会很快被杀死。如果你想以这种方式创建一个对象并将它保留更长时间,请将它放在一个真正的范围中:viewScope.put(“myObject”,tmpVar);

我有一个视频,我试图给我的例子,我想4种方法来使用Java对象。在博客文章中,Tim Tripcony的一些非常好的评论可能会给你更多的信息。

http://www.notesin9.com/2013/08/01/notesin9-122-working-with-java-objects-in-xpages/

5

托管bean是完全相同的是,在运行时使用XPages管理。它们是在第一次打电话时创建的。虽然它们有一个空的构造函数,但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的该实例传递到数据对象中。