Easy4JFinal【每日分享】Interceptor里判断ajax请求

为了对返回的数据更好的处理,我们有时候需要判断返回的数据是否是Json。

之前发现很多朋友都是通过ajax请求的报文头来判断。

String requestType = request.getHeader("X-Requested-With");

该判断是确实是OK的,但是存在一定的问题:

如果我ajax load的是一个html页面,它也会把它判定为json请求。

下面的我在Easy4JFinal中对ajax json异常处理的拦截器。

/**
 * 对json系统异常时的统一处理
 */
public class JsonExceptionInterceptor implements Interceptor{

	@Override
	public void intercept(Invocation inv) {
		Controller controller = inv.getController();
		try {
			inv.invoke();
		} catch (Exception e) {
		    Render render = controller.getRender();
			if (render instanceof JsonRender) {
				// json数据异常时返回
				Record record = new Record();
				record.set("success", false);
				record.set("msg", e.getMessage());
				controller.renderJson(record);
			} else {
				// 上层errorView进行处理
				throw new RuntimeException(e);
			}
		}
	}

}

其中对json请求的判断采用的render进行的判断。

今日分享就到这了,明日再会。

Easy4JFinal源码地址:http://git.oschina.net/dreamlu/Easy4JFinal

捐助共勉
版权声明:若无特殊注明,本文皆为原创,转载请保留文章出处。