我想测试一下会话范围bean是否在使用SSJS的beforePageLoad事件中实际上有效。如果我使用Debug工具栏清除会话范围,那么在尝试测试bean以查看它是否为null时会出现错误。
if(registrationBean == null){
错误是: 执行JavaScript动作表达式时出错 脚本解释器错误,line = 2,col = 22:[ReferenceError]'registrationBean'未找到
问题是如何测试bean以查看它是否被实例化?如果没有,那么我想转到另一个XPage(重定向)以允许用户输入用于填充bean的值。
或者,这只是一个问题,因为我使用调试工具栏来清除所有会话和应用程序范围?
霍华德
答案 0 :(得分:1)
使用try / catch块。如果您收到错误,则为空。
我怀疑这只是一个问题,因为applicationScope已被清除。通常,引用变量的第一次尝试会实例化对象。但是,清除整个applicationScope可能会破坏应用程序中的大量XPage代码,应该避免使用。
答案 1 :(得分:1)
首先,确保在faces_config.xml中设置了bean(但似乎是这种情况)。那么在实例化之前你不应该引用bean ...
查看bean实例化的简单方法是将System.out.println(“....”)放在bean的构造函数中。这应该会让你走上正轨。您可以(应该!)使用OpenNTF LogReader来查看正在发生的事情 - 这将显示页面和bean引发的任何错误。
然后当然通过调试工具栏清除所有数据可能会使系统处于“未知”状态 - 您应该尝试重新加载页面,以确保它定义明确/实例化。
/约翰