如何解决Spring DWR engine.js 失败未知错误
我们有一个使用 Spring 框架 5.1.7.RELEASE、JDK 1.8 和 DWR 3.0.2 部署在 强>是 8.5。我们有一个 JSP 网页;向用户显示一些统计信息;网页像几年一样工作正常,突然间它开始无法加载。当我们调试问题时;我们将其缩小到 dwr 的 ajax 请求;它在 engine.js 中失败,出现未知错误。我们想到的;我们将提供信息来回答这个问题。代码片段在下面,它继续在下面的第 3 行失败,即 controllerClass.someMethod 调用。 selectObj1 和 selectObj2 是数组类型的对象。
if (document.getElementById("someCheckBox").checked) {
//Below controllerClass is the name of JS class produced by DWR but actually it's a Java class (i.e. object used below)
controllerClass.someMethod("Value1",selectObj1,selectObj2,'Value2','Value1',function(data) {
if (data != null) {
hideView("viewOne",false); //user defined function call
fillData("viewName",data[0]); //user defined function to fill the returned data
valueRet1 = data[1];
someConst = "X";
displayNavCon(pageNumber); //user defined function to control the navigation on web page
} else {
alert("No Data Found!!!");
recordCount=0;
}
});
解决方法
当涉及到 DWR 并且它开始失败时,engine.js 中出现错误;我认为 DWR 需要在那里进行一些改进。因为大部分时间错误是/是未知的。因此,在上述情况下 - 我们使用 selectObj1 像数组和 selectObj2 像在 DWR 的 ajax 调用中传递一些数据一个数组,构建的数据多年来没有变化;然后我们注意到在 selectObj1 中传递了一个十进制值,其中包含逗号,我们在将数据提供给 DWR 的 ajax 调用和 Bingo 之前删除了逗号!有效。代码修复如下;
//we are omitting the construction of other object being passed in i.e. selectObj2
var indexBrkLp = 0;
if (priceVal != null){
while (priceVal.includes(",")){
indexBrkLp++;
priceVal = priceVal.replace(",","")
if (indexBrkLp > 5){
break;
}
}
}
var selectObj1={
val2:(val2 == null? "": val2),priceVal :(priceVal == null? "": priceVal)
};
if (document.getElementById("someCheckBox").checked) {
//Below controllerClass is the name of JS class produced by DWR but actually it's a Java class (i.e. object used below)
controllerClass.someMethod("Value1",selectObj1,selectObj2,'Value2','Value1',function(data) {
if (data != null) {
hideView("viewOne",false); //user defined function call
fillData("viewName",data[0]); //user defined function to fill the returned data
valueRet1 = data[1];
someConst = "X";
displayNavCon(pageNumber); //user defined function to control the navigation on web page
} else {
alert("No Data Found!!!");
recordCount=0;
}
});
结论 - 如果您看到 engine.js 失败,那么它可能不仅仅是您的代码出了问题;它可能是它不喜欢的数据,也可能是与 DWR 相关的其他一些配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。