我想使用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另一種選擇是在構造函數 –