相当于数据库脚本的Xpages初始化

时间:2015-10-12 22:13:08

标签: xpages xpages-ssjs xpages-extlib

我在XPiNC中运行Xpages。

我常用的Xpages应用程序模式是将xpHome.xsp页面设置为打开的第一个页面。在这个I页面中,我设置了应用程序级别的任何范围变量,然后前往“真正的”第一页。

现在我遇到了一个问题。我的当前数据库将在状态更改时发送电子邮件,这将包括指向文档的文档链接,该文档指向要打开的正确X页。但是,由于用户没有浏览主页,因此我的applicationScope vars正在设置中。

我认为我可以通过在initApp函数中设置信号量来解决这个问题 - 它最后要做的是在applicationScope.semaphore字段中放置一个“Y”。因此,当我打开我的Xpage时,它首先要检查的是,如果它是null,那么我调用initApp函数。

由于某种原因,这不起作用。但即便如此,我仍希望找到相当于旧数据库脚本“Initialize”的事件。我第一次打开数据库时可以调用的东西。

其他人如何处理这个问题?

1 个答案:

答案 0 :(得分:7)

创建托管Java bean" app"哪个

  • 适用于应用范围
  • 设置所有应用程序参数
  • 提供所有应用参数

使用EL或Javascript中的app.xxx访问bean,或直接调用JavaScript中的app.getXxx()app.doWhatEverYouWant()方法。

bean" app"当第一次调用其中一个方法时,会自动获得初始化。

您可以找到一个示例here用于开始或谷歌用于" XPages托管bean"了解更多信息。

是的,您必须将当前代码部分切换到Java,但从长远来看它应该是值得的。

如果您想要或不得不继续使用JavaScript,那么在自定义控件中初始化您的应用程序范围变量,该控件包含在每个XPage中,例如在beforePageLoad事件中的layout.xsp。

使用其他变量applicationScope.initialized。检查applicationScope变量是否尚未在JavaScript中使用

进行初始化
if (!applicationScope.initialized) { 
    ... initialize your applicationScope variables ...
    applicationScope.initialized = "yes";
}