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 }
更多文章见:http://www.16boke.com