Как реализовать пользовательскую строку ошибки с помощью Spring's ExceptionHandler? - PullRequest
1 голос
/ 26 июля 2011

В веб-контроллере у меня есть реализация @ExceptionHandler для обработки определенного типа исключения устройства, которое я могу получить. Это выглядит так:

    @ExceptionHandler(DeviceException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ResponseBody
public void handleException(DeviceException ex) {
    log.error("controller caught exception " + ex.getMessage());
            return ex.getMessage();
}    

Чего я хочу добиться - это вернуть сообщение об исключении, когда выдается исключение DeviceException.

На стороне клиента у меня есть этот код jQuery, в настоящее время проблема в том, что я не могу получить какой-либо контент ex.getMessage () в обратном вызове ошибки, вот что мне нужно решить.

        $.ajax( {
        type: "GET",
        url: "<c:url value="/x/y/status"/>.json",
        dataType: "json",
        cache: false,
        success: function ( data ){
          // use the data
        },
        error: function(jqXHR, textStatus, errorThrown) {
            // problem : all 3 of the data below (responseText etc.) are blank when I've thrown a DeviceException

            alert('jqXHR.responseText = ', jqXHR.responseText);
            alert('textStatus = ', textStatus);
            alert('errorThrown = ', errorThrown);
        }
    } );

Ответы [ 2 ]

1 голос
/ 26 июля 2011

@ ResponseStatus также имеет поле значения. Это может быть использовано для установки любых пользовательских сообщений. Проверьте документацию @ http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/ResponseStatus.html

0 голосов
/ 26 июля 2011

Механизм @ExceptionHandler очень гибок с параметрами и типами возврата, которые может иметь метод, аннотированный им.

Вы можете использовать некоторую комбинацию объекта HttpServletResponse или возвратаМодель и / или Представление, чтобы вернуть что-то значимое для вызывающей стороны AJAX - например, конкретный код ответа, или записать что-то в выходной поток, который можно проанализировать в JavaScript и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...