当抛出java异常时,jqgrid将无法再运行
我不知道为什么总是这样: 在调试过程中,java中抛出了一个错误,因此我无法再运行jqgrid。例如,我在java中故意拼错了sql语法,抛出了一个异常,然后在java程序无法再执行良好更改后再次查询。屏幕上显示加载闪过,jqgrid没有做任何操作。然后我必须重新启动tomcat以再次调试。只要背景是导致这种情况的任何异常 对不起,我的英语很差 有没有办法改善这种情况?谢谢 这是我的密码:当抛出java异常时,jqgrid将无法再运行,jqgrid,Jqgrid,我不知道为什么总是这样: 在调试过程中,java中抛出了一个错误,因此我无法再运行jqgrid。例如,我在java中故意拼错了sql语法,抛出了一个异常,然后在java程序无法再执行良好更改后再次查询。屏幕上显示加载闪过,jqgrid没有做任何操作。然后我必须重新启动tomcat以再次调试。只要背景是导致这种情况的任何异常 对不起,我的英语很差 有没有办法改善这种情况?谢谢 这是我的密码: $.ajaxSetup({ cache: false }); var colspan = 5; //th
$.ajaxSetup({ cache: false });
var colspan = 5;
//the last modified cell's iRow and iCol
var lastedit = [];
//color array
var colorarray = new Array(['invalid_normal', 'invalid_manual','invalid_swap','invalid_business'],['valid_normal','valid_manual','valid_swap','valid_business']);
$.ajax(
{
type: "GET",
url: "/cbill/routenew/routequerydata.do",
data: "",
dataType: "json",
success: function(result){
var colModel = createcolModel(result.colModel);
var grid = jQuery("#gridTable");
grid.jqGrid({
jsonReader: {
root: "gridModel", // (2)
records: "record", // (3)
repeatitems : false // (4)
},
url: '/cbill/routenew/freshgriddata.do',
datatype: 'json',
mtype: "GET",
colModel :colModel,
pager: "#gridPager",
rowNum: 50,
rowList: [50,100],
height: 500,
loadonce:false,
//width: 1500,
//autowidth: true,
//colNames: colModelData,
viewrecords: true,
prmNames: {search: 'search'}, //(1)
caption: "Route",
position:"last",
multiselect: true,
multiboxonly:true,
toppager: true,
rownumbers:true,
shrinkToFit:true,
hidegrid: false
});
grid.jqGrid('navGrid','#gridPager',{del:false,add:false,edit:false},{},{},{},
{
caption: "Search",
Find: "Go!",
Reset: "Reset",
//refresh: true,
closeAfterSearch: true,
multipleSearch: true,
groupOps: [{ op: "AND", text: "All" }],
cloneToTop: true
}
).navButtonAdd('#gridPager_left',{
caption:"RT Modify",
buttonicon:"ui-icon-newwin",
onClickButton: function(){
$("#rowdata").jqGrid('GridUnload');
var ids = grid.jqGrid('getGridParam','selarrrow');
if (ids.length == 1) {
var entirerow;
for (var i=0, il=ids.length; i < il; i++) {
var entirerow = grid.jqGrid ('getRowData',ids[i]);
}
//alert(entirerow.vc2routeno);
lastedit = loadComparisonRowData(entirerow, colModel);
}else{
alert("Please select one route!");
return false;
}
},
position:"last"
}).navSeparatorAdd("#gridPager_left",{sepclass : 'ui-separator',sepcontent: ''}).navButtonAdd('#gridPager_left',{
caption:"State Modify",
buttonicon:"ui-icon-newwin",
onClickButton: function(){
$("#rowdata").jqGrid('GridUnload');
var ids = grid.jqGrid('getGridParam','selarrrow');
if (ids.length != 0) {
if($("#gridPager_left").find("#vc2subroutecode").val()=='' && $("#pg_gridPager").find("#vc2subroutecode").val()==''){
alert("Please enter the sub-route code!");
return false;
}
var rowcells=new Array();
var vc2updrouteno=new Array();
for (var i=0, il=ids.length; i < il; i++) {
var entirerow = grid.jqGrid ('getRowData',ids[i]);
rowcells.push(entirerow);
vc2updrouteno.push(entirerow.vc2routeno);
}
loadSelectedRowData(rowcells, vc2updrouteno, colModel);
}else{
alert("Please select route!");
return false;
}
},
position:"last"
});
$('#gridPager_left').clone(true).insertBefore('#gridTable_toppager_left')
$('#gridTable_toppager_left').remove();
$("#resetSearch").click(function() {
var grid = $("#gridTable");
grid.jqGrid('setGridParam',{search:false});
var postData = grid.jqGrid('getGridParam','postData');
$.extend(postData,{filters:""});
// for singe search you should replace the line with
// $.extend(postData,{searchField:"",searchString:"",searchOper:""});
grid.trigger("reloadGrid",[{page:1}]);
});
//$('.ui-jqgrid-hdiv').hide();
$("#consoleDlg").dialog({
autoOpen: false,
modal: false,
resizable: true,
height: 620,
width: 1200,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); },
buttons: { //
"Cancel": function() {$("#consoleDlg").dialog("close");},
"Update" : function(){updateRouteInfo(colModel)},
"Confirm": updateRouteFlag,
"I Know": copyToClipboard
}
});
},
error : function(textStatus, errorThrown) {
alert("route list error: " + textStatus);
}
});
嗨,奥列格,谢谢你的建议
事实上,我的困惑是因为服务器端java导致错误,导致客户端jqgrid无法运行。我不知道我是否调用grid.jqGrid'GridUnload','gridTable'来解决这个问题,因为现在我甚至不知道把这个方法放在哪里,因为服务器端抛出了一个异常,我不知道捕获它然后调用这个方法的事件是什么。当url“/cbill/routenew/freshgriddata.do”导致错误时,我不知道在grid.jqGrid{/*parameters*/}中处理异常的位置
当发生java错误且我刷新页面时,将引发以下客户端异常:
错误:函数textStatus,error抛出{
警报路由列表错误:+textStatus;
}
服务器端既不执行“/cbill/routenew/routequerydata.do”,也不执行“/cbill/routenew/freshgriddata.do”
我在这里有两个弹出窗口来修改一些数据:
更新:函数{updateRouteInfocolModel},
确认:updateRouteFlag
正如我上面所说的,每当在这些代码中抛出异常时,我就不能执行查询,当我刷新页面时就会出现上面的客户端异常。我在所有代码中都有几个错误函数,java异常总是会在上面的第一个错误函数中导致客户端错误,我认为错误状态保存到jqgrid
当然,我试图改进服务器端代码以避免错误,但不能避免所有错误。如果在后台发生异常,jqgrid程序模块将不会运行
我不知道是否要确切地表达我的意思。我需要你更多的帮助。感谢永久加载消息通常意味着从服务器开始加载网格数据,但由于某些原因,JavaScript代码中的某个地方出现了异常。我建议您使用一些调试器,例如InternetExplorer的开发者工具来本地化错误/异常的位置 一次尝试加载数据的问题可能是因为您多次使用上述代码。问题如下。jqGrid构造了一些div和许多其他HTML元素,您可以在这些元素上使用它们。因此,您应该调用grid.jqGrid{/*参数*/};每个网格仅一次。如果确实需要重新加载列定义,然后在页面上重新加载网格,则应调用:grid.jqGrid'GridUnload','gridTable',然后重新分配网格变量:grid=jQuerygridTable;。请参见相应的演示示例中的 还有一句话。我不建议您使用$'gridPager_left'。clonetrue。相反,您可以使用navGrid的参数:
要向标准底部寻呼机添加按钮,您应该使用gridPager或“gridTable\u toppager”,而不是像您这样使用gridPager\u left和“gridTable\u toppager\u left”。此外,您不应该删除任何jqGrid元素,如果不需要,只需隐藏它即可。例如,代码$'gridTable\u toppager\u left'。删除;看起来我很危险。我在问题中添加了细节。请多帮点忙。Thanks@hover:抱歉,您的更新几乎没有新信息。您写道,jqGrid中的错误后面会出现服务器端的错误。重要的是要知道在这种情况下将发送哪个服务器响应?您可以使用或检查服务器响应。重要的是,如果出现错误,将发送错误HTTP cade。另外重要的是,至少在没有错误的情况下,必须是application/json。我找到了一个解决方案,当java抛出异常时,结果总是返回到success而不是error。这将避免jqgrid无法运行的情况。在结果中,我将添加一个标志来确定它是否成功。奥列格,谢谢你的帮助。
grid.jqGrid('navGrid','#gridPager',{cloneToTop:true, ...}