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

Xpages相当于数据库脚本初始化,xpages,xpages-ssjs,xpages-extlib,Xpages,Xpages Ssjs,Xpages Extlib,我在XPiNC运行Xpages 对于Xpages应用程序,我通常的模式是将xpHome.xsp页面设置为打开的第一个页面。在这个I页面中,我设置了应用程序级别的任何范围变量,然后转到“real”第一页 现在我遇到了一个问题。我当前的数据库将在状态更改时发送电子邮件,这将包括指向该文档的文档链接,该链接指向要打开的正确Xpage。但是,由于用户没有浏览主页,因此正在设置我的applicationScope变量 我想我可以通过在initApp函数中设置一个信号量来解决这个问题——它要做的最后一件事是

我在XPiNC运行Xpages

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

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

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

出于某种原因,这是行不通的。但即便如此,我还是希望找到与旧数据库脚本“Initialize”事件等效的事件。每当数据库第一次打开时,我都可以调用它


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

创建一个托管JavaBean“app”,它

  • 有关适用范围的工作
  • 设置所有应用程序参数
  • 提供所有应用程序参数
使用EL或Javascript中的
app.xxx
访问bean,或直接调用Javascript中的
app.getXxx()
app.doWhatEverYouWant()
等方法

当第一次调用其中一个方法时,bean“app”将自动初始化

有关更多信息,您可以找到start或google的“XPages托管bean”示例

是的,您必须将当前代码部分转换为Java,但从长远来看,这是值得的


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

使用附加变量
applicationScope.initialized
。使用JavaScript检查applicationScope变量是否尚未初始化

if (!applicationScope.initialized) { 
    ... initialize your applicationScope variables ...
    applicationScope.initialized = "yes";
}

请为您的检查添加代码,并确认它是否在SSJS脚本库中以及添加的位置。我使用initApp函数的方法设置一个变量,一旦完成,多年来都没有问题。别忘了同步这个块。Sven,这是什么意思?