博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2与EasyUI整合时,对于Exception异常的处理,返回含错误信息的JSON字符串
阅读量:6902 次
发布时间:2019-06-27

本文共 2096 字,大约阅读时间需要 6 分钟。

hot3.png

一、背景

既然使用了EasyUI那么,基本上都是通过JSON来进行数据交换。那么问题就来了,struts2可以通过配置,发生异常时,可以转发到相应错误页面,并显示错误信息。我们不需要返回错误页面啊!那如何返回一个JSON字符串呢?

 

 

struts.xml配置文件:

 

/WEB-INF/jsp/common/error.jsp

 

    

 用户列表JSP页面:

 

id 用户名 姓名 邮箱地址 手机 生日 操作

 

如果没有异常那么正常返回的JSON字符串格式为{"total":总共记录数,"rows",[{用户信息1},{用户信息2}...]}

用户信息中的JSON字段名称与th 的  data-options="field:'字段名'..   一致

 

原先可能你会这么写错误页面:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags"%>
错误页面 错误信息:

 

二、思路

思路其实很简单,指定的错误页面是JSP,那么我们可以让JSP页面显示JSON字符串不就行了么。

 

二、实施

有了,思路就要实施了,现在你只需要让错误页面,返回一个包含错误信息的JSON字符串

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags"%>{"errorMsg":"
"}

 

来试试看,故意抛出个异常,

/**     * 用户列表JSON     *      * @return     */    public String list() throws Exception {        dataMap.clear();        // 故意抛出个异常,看看是否凑效        if (true)            throw new HibernateException(new RuntimeException(new Exception("[这是异常啊!!!!}\"..._}]")));        int total = userService.countAll();        Collection
users = userService.findPageByHQLQuery( getStartIndex(), getPageSize()); log.debug("用户数:" + total); dataMap.put("total", total); // 过滤集合中元素的属性 JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerPropertyExclusions(User.class, new String[] { "roles", "OPTIONS" }); dataMap.put("rows", JSONArray.fromObject(users, jsonConfig)); return "list"; }

 

 

可以显示错误信息,OK,这样就搞定了,O(∩_∩)O~

 

注释掉看看原来的信息能不能正常显示,:

//if (true)//            throw new HibernateException(new RuntimeException(new //Exception("[这是异常啊!!!!}\"..._}]")));

 

 还好可以正常显示。。。O(∩_∩)O~

 

我这边对异常信息处理比较粗糙,而且错误信息也不够友好,用户看到的话,肯定不知道是什么意思,这是问题所在,大家如果有什么更好的方法,更优雅的方法,让struts2处理异常信息,而且这个信息能够比较友好的,请赐教,欢迎讨论。。。

 

转载于:https://my.oschina.net/u/1167421/blog/546462

你可能感兴趣的文章
7 Java NIO Selector-翻译
查看>>
rvm 添加 Path
查看>>
All Users in SharePoint Site Custom Webpart
查看>>
pip下载源更换为豆瓣源
查看>>
Java多线程之先行发生原则(happens-before)
查看>>
React Render props
查看>>
自动类型转换
查看>>
C# winfrom 当前程序内存读取和控制
查看>>
电话号码分身
查看>>
Redis持久化方案
查看>>
Unity保存序列化数据
查看>>
测试jupyter notebook导出md格式的兼容性
查看>>
【转】WPF MultiBinding 和 IMultiValueConverter
查看>>
解决springMVC文件上传报错: The current request is not a multipart request
查看>>
Struts2国际化-getText()方法
查看>>
实时监听组件中路由的变化
查看>>
MnasNet:迈向移动端机器学习模型设计的自动化之路
查看>>
选项卡的JS
查看>>
青蛙的约会(扩展欧几里得)
查看>>
Asia Yokohama Regional Contest 2018 C题 - Arithmetic Progressions(思维)
查看>>