Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当抛出java异常时,jqgrid将无法再运行_Jqgrid - Fatal编程技术网

当抛出java异常时,jqgrid将无法再运行

当抛出java异常时,jqgrid将无法再运行,jqgrid,Jqgrid,我不知道为什么总是这样: 在调试过程中,java中抛出了一个错误,因此我无法再运行jqgrid。例如,我在java中故意拼错了sql语法,抛出了一个异常,然后在java程序无法再执行良好更改后再次查询。屏幕上显示加载闪过,jqgrid没有做任何操作。然后我必须重新启动tomcat以再次调试。只要背景是导致这种情况的任何异常 对不起,我的英语很差 有没有办法改善这种情况?谢谢 这是我的密码: $.ajaxSetup({ cache: false }); var colspan = 5; //th

我不知道为什么总是这样: 在调试过程中,java中抛出了一个错误,因此我无法再运行jqgrid。例如,我在java中故意拼错了sql语法,抛出了一个异常,然后在java程序无法再执行良好更改后再次查询。屏幕上显示加载闪过,jqgrid没有做任何操作。然后我必须重新启动tomcat以再次调试。只要背景是导致这种情况的任何异常

对不起,我的英语很差

有没有办法改善这种情况?谢谢

这是我的密码:

$.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, ...}