flexigrid 的使用【添加错误处理功能】

flexigrid是一个很出色的页面表格展示插件,可以很方便的与系统后台通信,数据传输可以使用XML也可以使用JSON进行异步传输。

虽然flexigrid有很多优秀的功能,但是对于一个需要异常展示的功能却还不能满足,这样就需要我们开发人员对源码进行二次修改。

关于flexigrid的各种属性介绍,网上已经有很多这样的教程了,这里就不在进行介绍了,如果有不明白使用的地方可以随便上网搜索,这里只介绍开发过程中遇到的问题,及解决方法。

相信大家都遇到过这样的需求场景,前台页面使用flexigrid需要展示一些列表信息,并且这些列表信息是通过ajax异步请求后台action处理之后返回的结果。后台action处理之后返回json格式的串。

如果在后台处理过程中发生了异常,这样应该终止查询操作,并且将出错的信息返回到前台页面上,但是flexigrid没有提供一个自定义的错误输出功能。

处理方法是:首先在后台利用try catch捕获异常,然后将异常信息封装到json串中。代码如下:

public void writeJSONErrorMsg(String msg) {
	  JSONObject jsonObject = new JSONObject();
	  jsonObject.put("errorflag", "-1");
	  jsonObject.put("errormsg", "温馨提示:系统发生异常,具体错误信息为:"+msg+",请联系开发人员进行解决!");
	  renderHtml(jsonObject.toString());
  }

其中这里的errorflag和errormsg可以随便指定。

其次需要修改flexigrid.js源码,添加上解析这两个标签的代码,代码如下:

在addData : function(data)这段代码体中添加下面的逻辑:

if (p.dataType == 'xml') {
					p.errormsg = +$('rows errormsg', data).text()
				} else {
					p.errormsg = data.errormsg
				}
				var errorflag = "";
				if (p.dataType == 'xml') {
					errorflag = +$('rows errorflag', data).text()
				} else {
					errorflag = data.errorflag
				}
				if(errorflag=="-1"){
					$('.pReload', this.pDiv).removeClass('loading');
					this.loading = false;
					$('.pPageStat', this.pDiv).html(p.errormsg);
					return false
				}

在这里进行解析json中的这两个新增的节点,通过判断errorflag=-1再将页面上的“加载中..."样式给去掉,然后显示我们自己定义的错误信息,最后达到我们想要的要求。


更多文章见:http://www.16boke.com


你可能感兴趣的:(异常捕获,flexigrid,后台错误)