xpages SSJS:无法摆脱日志中的 "com.ibm.xsp.acl.RedirectSignal" 警告

xpages SSJS: cannot get rid of "com.ibm.xsp.acl.RedirectSignal" warnings in log

我正在构建一个多语言应用程序,我正在将最新使用的语言的值存储在 cookie 中。

当用户打开应用程序时,未设置 sessionScope 变量,如果区域设置不正确,代码将查找 cookie 值并重新加载页面。

每次在正确的语言环境中重新加载页面时,我都会收到 "com.ibm.xsp.acl.RedirectSignal" 警告,我想避免它。

我的代码位于我在应用程序中使用的 ApplicationLayout 控件的 beforeRenderResponse 事件中,看起来像这样:

if(!sessionScope.lang) {  //this only happens when the page is opened in browser for the first time
    var lang = context.getUrlParameter("lang").toLowerCase();
    if(!!lang) {
            sessionScope.lang = lang.toUpperCase();
            //set cookie for next time the site is opened by user
            setCookie("lang", lang.toUpperCase(), 30);
            context.setLocale(new Locale(lang.toLowerCase()));
    } else {
        //set language from cookie
        var lang = getLangFromCookie();
        if(!!lang) {
            sessionScope.lang = lang;
            context.setLocale(new Locale(lang.toLowerCase()));
        } else {
            sessionScope.lang = Appconfig.defaultLang;
            context.setLocale(new Locale(Appconfig.defaultLang.toLowerCase()));
        }
    }

    //need to trpa the redirect error thrown here, as it is just a warning - avoid filling log with this
    //importPackage(com.ibm.xsp.acl.RedirectSignal);
    importPackage(com.ibm.xsp.acl.RedirectSignal);

    try {
        //reload the page so Locale value kicks in
        context.reloadPage();
    } catch (RedirectSignal rs) { 
        //just ignore
    }
}

尽管我添加了 importPackage 行,但在保存代码时仍然出现错误(它在脚本库中):

在行...遇到“"rs"”

我怎样才能完成这项工作?

谢谢 :D

catch 是一个 Throwable,而不是 RedirectSignal。这是我在 handleException 函数中使用的代码

try {
    try {
        if (t instanceof RedirectSignal) {
            return;
        }
        if ("javax.faces.el.EvaluationException".equals(t.getClass().getName())) {
            if (t.getCause() instanceof RedirectSignal) {
                return;
            }
        }
    } catch (Throwable e) {
        // Error checking cause, skip
    }
    // Now log the error
} catch (Throwable e) {
    e.printStackTrace();
}

在 SSJS 中,您不会在 catch 块中定义异常的 type/class。由于您没有对 "exception" 执行任何操作,因此也无需导入 RedirectSignal class.

try {      
    context.reloadPage();
} catch ( redirectSignal ) { 
    // Ignore redirect signal "exception"
}