如何返回Java异常信息,以jQuery.ajax REST调用? [英] How to return Java Exception info to jQuery.ajax REST call?

查看:233
本文介绍了如何返回Java异常信息,以jQuery.ajax REST调用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些jQuery code,使一个REST调用一个Java后端。后端功能的处理可能遇到异常。是什么让这个信息备份到Javascript的最好方法是什么?在测试中,我抓住了例外,在Java中,并设置HTTP状态code至500。这引起了$就错误处理程序被调用,符合市场预期。在args设置为错误处理程序实际上并不包含任何有用的信息。我理想情况下传播的Exception.getMessage()字符串返回到错误处理程序以某种方式,但不知道怎么办。


传播handleClick(){
    VAR URL ='/backend/test.json';
    $阿贾克斯({
        键入:POST,
        网址:网址,
        缓存:假的,
        数据类型:JSON,
        成功:功能(数据){
            警报(它的工作);
        },
        错误:函数(jqXHR,textStatus,errorThrown){
            警报(jqXHR);
            警报(textStatus); //这回来为错误
            警报(errorThrown); //这回来为不确定
        }
    });
}

解决方案

我能够发送自定义错误消息(Java字符串)返回一个jQuery的客户端这种方式。我想我的自定义消息可以换成你想要的异常信息/需要

在控制器:

 公共静态无效handleRuntimeException(异常前,HttpServletResponse的
                                          对此,字符串消息){
        logger.error(前);
        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        。response.getWriter()写(消息);
        response.flushBuffer();
}
 

在客户端/ JavaScript的(从阿贾克斯呼吁错误事件)

  displayError:功能(jqXHR,textStatus,errorThrown){
   如果(jqXHR.responseText!==''){
        警报(textStatus +:+ jqXHR.responseText);
    }其他{
        警报(textStatus +:+ errorThrown);
    }
}
 

希望这有助于/

I have some jQuery code that makes a REST call to a Java back end. Processing of the back end function could encounter an Exception. What is the best way to get this information back up to Javascript? In a test I caught the exception in Java and set the HTTP status code to 500. This caused the $.ajax error handler to be called, as expected. the args to the error handler don't really contain any useful information. I'd ideally like to propagate the Exception.getMessage() string back to the error handler somehow, but don't know how.


function handleClick() {
    var url = '/backend/test.json';
    $.ajax({
        type: "POST",
        url: url,
        cache: false,
        dataType: "json",
        success: function(data){
            alert("it worked");
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR);
            alert(textStatus); // this comes back as "error"
            alert(errorThrown); // this comes back as "undefined"
        }
    });
}

解决方案

I was able to send a custom error message (java String) back to a jQuery based client this way. I think my custom message can be replaced with the exception info you want/need

in Controller:

public static void handleRuntimeException(Exception ex, HttpServletResponse 
                                          response,String message) {
        logger.error(ex);
        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        response.getWriter().write(message);
        response.flushBuffer();
}

In client/javascript (called from ajax on error event)

displayError:function(jqXHR, textStatus, errorThrown){
   if(jqXHR.responseText !== ''){
        alert(textStatus+": "+jqXHR.responseText);
    }else{
        alert(textStatus+": "+errorThrown);
    }  
}

Hope this helps/

这篇关于如何返回Java异常信息,以jQuery.ajax REST调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆