防止Tomcat覆盖控制器建议返回的错误响应

时间:2018-06-20 08:54:58

标签: java spring-boot tomcat

我已经实现了一个RestControllerAdvice来处理Spring Boot-Tomcat Web应用程序中的异常,如下所示:

var thisObj = this;

        var wnd = Ext.create('myApp.view.desktop.something.CustomWindow',{

            onButtonSubmitClick: function(){
                thisObj.doSomething();
                this.close();
            }

        });

        wnd.show();

因此,每当一个Web请求导致异常时,我都希望上述处理程序返回状态500和一个具有以下内容的json:“ {” technicalMessage“:” NullPointerException“,” userMessage“:”错误代码001“}

但是,不是一个html错误页面来打印整个堆栈跟踪,如下所示:enter image description here

SimpleResponse具有以下定义:

getCssStyleValue: function(name, value) {
    var testElement = this.getTestElement(),
        computedStyle = this.testElementComputedStyle,
        style = testElement.style;
    style.setProperty(name, value);
    if (Ext.browser.is.Firefox) {

        testElement.offsetHeight;
    }
    value = computedStyle.getPropertyValue(name);
    style.removeProperty(name);
    return value;
}

我放置了调试点,并观察到代码流确实正确到达以返回RestControllerAdvice的handleException语句。我认为一些tomcat如何忽略我的响应并显示异常堆栈跟踪。如何使我的应用程序在json中返回错误消息?

1 个答案:

答案 0 :(得分:0)

我可以解决问题。使用@RequestMapping(produces = MediaType.application_pdf_value)注释的rest控制器正在发生此问题。一些如何引发错误并由错误处理程序接收错误时,由于实际控制器的产生属性,POJO未转换为JSON的情况。我删除了Produces属性,而是将内容类型显式设置为响应。现在,这两种情况都可以正常工作,可以下载pdf或显示异常消息显示。