`
jaychang
  • 浏览: 731346 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

Struts2与EasyUI整合时,对于Exception异常的处理,返回含错误信息的JSON字符串

 
阅读更多

一、背景

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

 

 

struts.xml配置文件:

 

    <package name="xxx-default" extends="json-default">
        <global-results>
            <result name="error">/WEB-INF/jsp/common/error.jsp</result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping result="error" exception="java.lang.Exception">
            </exception-mapping>

 

        </global-exception-mappings>
    </package>

 用户列表JSP页面:

 

<table id="user_dg" class="easyui-datagrid"
	data-options="url:'${pageContext.request.contextPath}/user_list.do',
        fit:true,
        rownumbers:true,
        toolbar:'#user_toolbar',
        singleSelect:true,
        pagination:true,
        pageSize:20,
        loadFilter:function(result){ 
                    if(!result.rows||!result.total){ 
                        if(result.errorMsg){  
                            $.messager.alert('错误提示','获取用户列表信息失败!错误原因:<br/>'+result.errorMsg,'error');  
                        }else{  
                            $.messager.alert('错误提示','获取用户列表信息失败!','error');  
                        }  
                        return {total:0,rows:[]};  
                    }else{
                        return result;
                    }
                }">
	<thead>
		<tr>
			<th data-options="field:'id',width:50">id</th>
			<th data-options="field:'username',width:150,sortable:true">用户名</th>
			<th data-options="field:'name',width:150,sortable:true">姓名</th>
			<th data-options="field:'email',width:200">邮箱地址</th>
			<th data-options="field:'mobile',width:200">手机</th>
			<th data-options="field:'birthday',width:150,sortable:true">生日</th>
			<th data-options="field:'options',width:150">操作</th>
		</tr>
	</thead>
</table>

 

如果没有异常那么正常返回的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"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>错误页面</title>
</head>
<body>
	错误信息:
	<s:property value="exception.message" />
</body>
</html>

 

二、思路

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

 

二、实施

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

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

 

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

    /**
     * 用户列表JSON
     * 
     * @return
     */
    public String list() throws Exception {
        dataMap.clear();
        // 故意抛出个异常,看看是否凑效
        if (true)
            throw new HibernateException(new RuntimeException(new Exception("[这是异常啊!!!!}\"..._}]")));
        int total = userService.countAll();
        Collection<User> 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处理异常信息,而且这个信息能够比较友好的,请赐教,欢迎讨论。。。

 

  • 大小: 27.4 KB
  • 大小: 61.5 KB
分享到:
评论

相关推荐

    struts2+easyUI+ajax+json用户登验证

    Struts2、EasyUI、Ajax 和 JSON 是现代Web开发中常用的技术栈,它们结合使用可以构建出高效、交互性强的用户界面。以下是对这些技术及其在用户登录验证中的应用的详细解释。 **Struts2** 是一个基于MVC(Model-View...

    struts2+ajax+easyui+json+datagrid增删改查

    在"struts2+ajax+easyui+json+datagrid"的场景中,Struts2主要负责处理用户的请求,执行业务逻辑,并返回相应的响应数据。 **Ajax** (Asynchronous JavaScript and XML) 是一种在无需刷新整个页面的情况下更新部分...

    struts2-easyui.

    - **Action处理**:Struts2 Action接收到请求,调用后台服务处理数据,如从数据库中获取或更新信息。 - **JSON响应**:Action返回JSON格式的结果,便于前端解析和显示。 - **前端交互**:EasyUI使用jQuery的ajax...

    JQuery EasyUI 整合struts2 代码下载

    标题 "JQuery EasyUI 整合struts2 代码下载" 涉及到的是一个Web开发中的技术组合,主要集中在前端的JQuery EasyUI框架与后端的Struts2框架的集成应用。JQuery EasyUI是一个基于jQuery的UI库,提供了丰富的组件,如...

    Struts2_EasyUI_Spring3.1整合

    - 错误处理:在整合过程中可能出现各种异常,如类型转换异常、找不到bean等,需要正确处理这些异常,提供友好的错误信息。 - 安全性:考虑到Struts2的安全问题,如Struts2的OGNL漏洞,需要及时更新修复,同时对...

    EasyUI与Struts2使用json格式交互实例

    使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的EasyUI与Struts2的使用json格式进行交互开始。

    struts2+spring+mybatis+easyui的实现

    总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...

    struts2+easyui+uploadfye文件上传

    总之,“struts2+easyui+uploadfye文件上传”项目是一个结合了后端处理、前端展示和异步上传功能的典型示例,它展示了如何利用现有技术解决实际开发中的问题,对于学习和理解这些技术的集成应用具有很高的参考价值。

    Struts2.3.1与EasyUI1.2.5的整合

    Struts2.3.1与EasyUI1.2.5的整合是Web开发中的一个常见实践,主要用于构建高效、易用且美观的管理界面。Struts2是一个强大的MVC(Model-View-Controller)框架,它提供了良好的架构支持,帮助开发者实现业务逻辑与...

    Struts2,json,jquery_easyui项目框架

    Struts2、JSON、jQuery 和 EasyUI 是四个在Web开发领域广泛应用的技术,它们共同构建了一个高效、用户友好的项目框架。下面将详细解释这些技术及其在项目中的作用。 **Struts2** Struts2 是一个基于MVC(Model-View...

    struts2结合easyui实现增删改分页排序

    ### Struts2 结合 EasyUI 实现增删改分页排序 #### 一、概述 在Web开发领域,Struts2 和 EasyUI 是两个非常重要的框架和技术。Struts2 是一款基于MVC模式的Java Web应用程序框架,它帮助开发者构建灵活、可扩展的...

    基于java+struts2+easyui+Mysql实现的课程辅助系统含(课程管理,学生管理,论坛答疑)

    【作品名称】:基于java+struts2+easyui+Mysql实现的课程辅助系统含(课程管理,学生管理,论坛答疑) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训...

    spring+struts2+easyui项目,可直接导入eclipse运行,包含数据库脚本与jar包说明,学习参考价值高

    同时,Struts2与Spring的整合使得我们可以方便地利用Spring的bean管理功能。 3. EasyUI: EasyUI是基于jQuery的前端UI库,它提供了丰富的组件,如表格、树形控件、对话框等,使得页面布局和交互设计更为便捷。在本...

    SSH和easyui整合Demo

    json-lib是一个用于处理JSON格式数据的Java库,在Struts2和EasyUI之间进行数据传输时,可能会用到它将Java对象转换为JSON字符串。 整合这些技术的过程包括: 1. 配置Struts2:在struts.xml文件中定义Action和结果...

    jQuery EasyUI与Struts2 的整合—属性驱动篇

    在本文中,我们将深入探讨如何将jQuery EasyUI与Struts2框架进行整合,特别是关注属性驱动的方式。jQuery EasyUI是一个基于jQuery的前端UI库,它提供了丰富的组件和易于使用的API,使得开发人员能够快速构建美观的...

    struts2 + spring + hibernate + easyui 整合用户信息管理小案例

    系统搭建使用struts2 + spring + hibernate + easyui 整合的, 功能包括: 分页查询,自定义页面数据显示量,用户名模糊搜索,创建时间段,更新时间段内用户信息搜索,双击行进行编辑,多行选中删除,右键菜单已经写好...

    maven+struts2+spring+mysql+easyui框架整合

    SSM(Spring、Struts2、MyBatis)框架整合是Java Web开发中常见的技术栈,结合EasyUI前端框架,可以构建出功能丰富且用户体验良好的Web应用。在本项目"maven-ssm-web-demo"中,我们将深入探讨这个集成方案。 首先,...

    Sring+hibernate+struts2+easyui基本权限管理框架

    本示例"Spring+Hibernate+Struts2+EasyUI基本权限管理框架"提供了一个全面的解决方案,旨在帮助初学者理解和掌握这些核心技术的集成与应用。下面将分别介绍这四个主要组件以及它们在权限管理中的作用。 1. **Spring...

    Struts2与EasyUI和DBUtils的一个简单的小项目

    - 错误处理:良好的错误处理机制是必要的,如使用异常捕获并在前端友好地展示错误信息。 总的来说,"Struts2与EasyUI和DBUtils的一个简单的小项目"旨在帮助开发者理解这三个组件的集成使用,以及如何通过它们实现...

    使用Struts2和jQuery EasyUI实现简单CRUD系统

    在本文中,我们将探讨如何使用Struts2和jQuery EasyUI框架创建一个简单的CRUD(创建、读取、更新、删除)系统。首先,我们需要理解这两个技术的基础概念。 Struts2是一个基于MVC(Model-View-Controller)架构的...

Global site tag (gtag.js) - Google Analytics