Xpages 测试bean是否被实例化?

Xpages 测试bean是否被实例化?,xpages,Xpages,我想测试会话范围bean在使用SSJS的beforePageLoad事件中是否确实有效。如果使用调试工具栏清除会话作用域,则在尝试测试bean以查看其是否为null时会出现错误 if(registrationBean==null){ 错误是: 执行JavaScript操作表达式时出错 脚本解释器错误,第2行,第22列:[ReferenceError]“registrationBean”未找到 问题是如何测试bean以查看它是否被实例化???如果不是,那么我想转到另一个XPage(重定向),以允许

我想测试会话范围bean在使用SSJS的beforePageLoad事件中是否确实有效。如果使用调试工具栏清除会话作用域,则在尝试测试bean以查看其是否为null时会出现错误

if(registrationBean==null){

错误是: 执行JavaScript操作表达式时出错 脚本解释器错误,第2行,第22列:[ReferenceError]“registrationBean”未找到

问题是如何测试bean以查看它是否被实例化???如果不是,那么我想转到另一个XPage(重定向),以允许用户输入用于填充bean的值

或者,这只是因为我使用调试工具栏清除了所有会话和应用程序作用域而引起的问题吗


Howard

使用try/catch块。如果得到错误,则为null


我怀疑这只是一个问题,因为applicationScope已被清除。通常,第一次尝试引用变量会实例化对象。但是,清除整个applicationScope可能会破坏应用程序中的许多XPages代码,应该避免。首先,确保在faces\u config.xml中设置bean(但似乎是这样的)。那么在bean被实例化之前,您应该不能引用它

查看bean何时被实例化的一个简单方法是在bean的构造函数中放入System.out.println(“…”),这将使您走上正轨。您可以(应该!)使用查看发生了什么-这将显示页面和bean抛出的任何错误

当然,通过调试工具栏清除所有数据可能会使系统处于“未知”状态,您可能应该尝试随后重新加载页面,以确保它是定义良好的/实例化的


/John

是的,我认为我正在做一些不现实的事情。即使是带有调试工具栏的XPages(仅此而已)不要加载!try/catch是个好主意。如果没有实例化,bean不应该为null吗?关键是,如果您尝试检查,对bean名称的引用将传递给VariableResolver。我的理解是,faces配置中的定义提供了到Java类的映射。因此,如果您引用bean name,XPages(JSF?)运行时标识您需要它,因此尝试在相关范围内查找变量的现有实例,否则惰性加载它。因此,基本上,它不能为null,除非NSF的XPages运行时出错(这里发生了这种情况,您需要重建它来解决).@PaulStephenWithers另一个选项是构造函数中抛出异常这会发生吗?我认为bean必须有一个空构造函数。是的,如果构造函数的代码没有try/catch块,这可能是原因之一。