我想使用SSJS来测试会话作用域bean是否事实上在beforePageLoad事件中有效。如果使用“调试”工具栏清除会话范围,则在尝试测试bean以查看它是否为空时会出错。测试以查看bean是否被实例化?
如果(registrationBean == NULL){
错误是: 错误而执行JavaScript动作表达 脚本解释器误差,线= 2,COL = 22:[的ReferenceError] 'registrationBean' 未找到
问题是如何测试bean以查看它是否被实例化?如果没有,那么我想转到另一个XPage(重定向),以允许用户输入用于填充bean的值。
或者,这是否只是一个问题,因为我使用调试工具栏清除所有会话和应用程序范围?
Howard
是的,我想我正在做一些不现实的事情。甚至XPage上的调试工具栏(也就是这样)不会加载!然而,尝试/抓住好主意。如果没有实例化,bean不应该为null吗? – Howard
问题是,如果您尝试检查,则对bean名称的引用将传递给VariableResolver。我对当时会发生什么的理解是,faces-config中的定义给出了Java类的映射。因此,如果您引用bean名称,那么XPages(JSF?)运行时会标识出您想要的名称,因此会尝试在相关作用域中查找该变量的现有实例,否则懒加载它。所以基本上,它不能为null,除非NSF的XPages运行时被破坏(就像这里发生的那样,你需要重建它来解决)。 –
@PaulStephenWhathers另一种选择是在构造函数 –