Bry*_*ler 0 xpages xpages-ssjs xpages-extlib
我在XPiNC中运行Xpages.
我通常的Xpages应用程序模式是将xpHome.xsp页面设置为打开的第一个页面.在这个I页面中,我设置了应用程序级别的任何范围变量,然后前往"真正的"第一页.
现在我遇到了一个问题.我的当前数据库将在状态更改时发送电子邮件,这将包括指向文档的文档链接,该文档指向要打开的正确X页.但是,由于用户没有浏览主页,因此我的applicationScope vars正在设置中.
我想我可以通过在initApp函数中设置一个信号量来解决这个问题 - 它最后要做的是在applicationScope.semaphore字段中放置一个"Y".因此,当我打开我的Xpage时,它首先要检查的是,如果它是null,那么我调用initApp函数.
由于某种原因,这是行不通的.但即便如此,我仍希望找到相当于旧数据库脚本"Initialize"的事件.我第一次打开数据库时可以调用的东西.
其他人如何处理这个问题?
创建一个托管Java bean"app"
通过访问该bean app.xxx在EL或Javascript或直接调用方法,如app.getXxx()或app.doWhatEverYouWant()在JavaScript中.
当第一次调用其中一个方法时,bean"app"会自动初始化.
你可以在这里找到一个开始的例子或google的"XPages managed beans"以获取更多信息.
是的,您必须将当前代码部分切换到Java,但从长远来看它应该是值得的.
如果您想要或不得不继续使用JavaScript,那么在自定义控件中初始化您的应用程序范围变量,该控件包含在每个XPage中,例如在beforePageLoad事件中的layout.xsp.
使用其他变量applicationScope.initialized.检查是否在JavaScript中初始化了applicationScope变量
if (!applicationScope.initialized) {
... initialize your applicationScope variables ...
applicationScope.initialized = "yes";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |