struts json 类型异常返回到js弹框问题解决办法

yizhihongxing

Struts JSON 类型异常返回到 JS 弹框问题解决办法

问题描述

在使用 Struts 框架时,当后台向前端返回 JSON 类型的数据时,如果发生异常,如何将异常信息以弹框形式提示给用户?

解决办法

Struts 2 支持全局异常拦截器,我们可以在 struts.xml 文件中配置全局异常拦截器,并在异常拦截器中实现将异常信息转换成 JSON 类型,并通过 AJAX 返回给前端,从而达到在 JS 弹框中提示异常信息的效果。

以下是详细的步骤:

步骤一:配置 Struts 的全局异常拦截器

struts.xml 中添加如下配置:

<global-exception-mappings>
    <exception-mapping exception="java.lang.Exception" result="jsonError"/>
</global-exception-mappings>
<global-results>
    <result name="jsonError" type="json">
         <param name="errorCode">500</param>
         <param name="errorMsg">${exception}</param>
    </result>
</global-results>

解释一下上述配置的意思:

首先,我们设置 global-exception-mappings 用来配置全局异常映射,这里我们将 Exception 类型的异常映射到 jsonError 结果上。

然后,我们设置 global-results 用来声明全局结果,这里我们将 jsonError 名称的结果设置为 JSON 类型,并将异常的信息传递给该结果。在前端 AJAX 请求返回时,我们可以通过 JavaScript 获得到该 JSON 数据,并在弹框中显示其包含的异常信息。

步骤二:编写 AJAX 请求

在前端页面中,我们需要编写 AJAX 请求,该请求会向服务器发送数据,如果服务器返回 JSON 类型的异常信息,我们需要将其信息拿到并在弹框中显示。

下面是一个简单的 AJAX 请求示例:

$.ajax({
    url: '/greet',
    type: 'GET',
    async: true,
    data: {username: 'world'},
    success: function(data){
        alert("Hello " + data.username);
    },
    error: function(xhr, status, error){
        alert("Error: " + xhr.responseText);
    }
});

在上面的示例中,我们向 /greet 路径发送了一条 GET 请求,并且传递参数 usernameworld,如果请求成功,我们会在弹框中显示服务器返回的 JSON 数据中包含的 username 的值,如果请求失败,我们将在弹框中显示错误信息。

步骤三:抛出异常

在后台代码中,我们可以通过 throw new Exception("error message") 来抛出一个异常。

当客户端调用包含该方法的 URL 时,服务器会捕获该异常并将其映射为 jsonError 结果。

最后,客户端将获取到异常信息并以 JavaScript 弹框的方式将其显示给用户。

总结

通过配置 Struts 的全局异常拦截器,我们可以将异常信息转换为 JSON 格式并通过 AJAX 返回给前端,在 JS 弹框中显示异常信息。这种方式可以更加友好地提示用户,让用户更好的着手解决问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts json 类型异常返回到js弹框问题解决办法 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Java+OpenCV实现图片中的人脸识别

    Java+OpenCV实现图片中的人脸识别攻略 简介 OpenCV是一组用于计算机视觉的开源库,提供许多常用的计算机视觉算法和工具。它支持多种编程语言,包括 Java。本文介绍如何使用Java和OpenCV来实现图片中的人脸识别。 编译环境 开发环境:Eclipse Java版本:Java 8 OpenCV版本:OpenCV 3.4.3 安装OpenCV 下…

    人工智能概论 2023年5月24日
    00
  • OpenStack之日志详细介绍

    好的。首先,我们需要介绍一下OpenStack的日志系统,包括日志文件的位置、日志级别等。然后,我们将讲解如何使用命令行工具查看和管理OpenStack的日志文件。最后,我们将演示如何通过修改配置文件来设置OpenStack的日志级别。具体攻略如下: 介绍 日志文件位置 OpenStack的日志文件存储在各个服务的日志目录下,通常在/var/log/<…

    人工智能概览 2023年5月25日
    00
  • AndroidStudio集成OpenCV的实现教程

    我将为你详细讲解如何在Android Studio中集成OpenCV。 简介 OpenCV是一个开源的计算机视觉库,可以实现图像处理、机器学习、目标检测、人脸识别等多种功能。在Android平台上,使用OpenCV可以实现很多有趣的应用,比如OpenCV相机、人脸识别等。 本文将介绍如何在Android Studio中集成OpenCV,并给出两个示例说明。 …

    人工智能概览 2023年5月25日
    00
  • Django 查询数据库并返回页面的例子

    下面是 Django 查询数据库并返回页面的例子的完整攻略: 1. 创建一个 Django 项目 首先需要在本地安装好 Django,并创建一个 Django 项目。打开终端,输入以下命令: django-admin startproject myproject 这里的 myproject 可以改成任何你想要的项目名。 2. 创建一个 Django 应用 在…

    人工智能概论 2023年5月25日
    00
  • 什么是MEAN?JavaScript编程中的MEAN是什么意思?

    MEAN是JavaScript编程中的一个技术栈,它包含了四个技术领域的理念:MongoDB、Express.js、AngularJS、Node.js。下面我来详细讲解一下这四个技术领域对于MEAN的意义和重要作用。 MongoDB MongoDB是一个面向文档的数据库,可以帮助我们存储和管理数据。它非常灵活,可以处理非结构化数据和大规模数据。在MEAN技术…

    人工智能概论 2023年5月24日
    00
  • Python开发之Nginx+uWSGI+virtualenv多项目部署教程

    下面我来为您详细讲解“Python开发之Nginx+uWSGI+virtualenv多项目部署教程”的完整攻略。 一、什么是Nginx+uWSGI+virtualenv多项目部署? Nginx和uWSGI是两种常见的Python Web服务器。Nginx负责处理静态资源和代理请求,而uWSGI则负责处理动态请求。virtualenv是Python的虚拟环境工…

    人工智能概览 2023年5月25日
    00
  • Centos 6.4 安装erlang&rabbitmq的方法

    Centos 6.4 安装erlang的方法 安装依赖 在进行erlang安装之前,我们需要先安装一些必要的依赖包。我们可以通过执行以下的命令来安装所需的依赖包: yum install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel 下载erlang源代…

    人工智能概览 2023年5月25日
    00
  • Android自定义TimeButton实现倒计时按钮

    Android自定义TimeButton实现倒计时按钮攻略 前言 在Android开发过程中,经常会遇到需要实现倒计时按钮的需求。例如在用户注册登录时,发送验证码需要倒计时等待。这时,我们可以采用一个自定义的控件:TimeButton。 TimeButton实现了倒计时功能,是一个非常实用的控件。在本篇攻略中,我们将介绍如何自定义TimeButton实现倒计…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部