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



我在XPiNC中运行Xpages

我通常的Xpages应用模式是有一个xpHome。设置为打开的第一页的XSP页。在第1页中,我设置了应用程序级别的所有作用域变量,然后转到"真正的"第1页。

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

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

由于某些原因,这不起作用。但即便如此,我还是想找到与旧数据库脚本"Initialize"事件等价的东西。可以在第一次打开数据库时调用。

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

创建一个托管Java bean "app"

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

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

bean "app"在其中一个方法第一次被调用时自动初始化。

你可以在这里找到一个例子,或者在谷歌上搜索"XPages managed beans"以获得更多信息。

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


如果你想或不得不使用JavaScript,那么在一个自定义控件中初始化你的应用程序范围变量,该控件包含在每个XPage(如布局)中。在beforePageLoad事件中。

使用额外的变量applicationScope.initialized。使用

检查JavaScript中的applicationScope变量是否还没有初始化
if (!applicationScope.initialized) { 
    ... initialize your applicationScope variables ...
    applicationScope.initialized = "yes";
}

最新更新