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"
}
我正在构建一个多语言应用程序,我正在将最新使用的语言的值存储在 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"
}