Обработка исключений в Spring 3 с использованием JSON - PullRequest
6 голосов
/ 13 апреля 2011

У меня есть Controller, и я хочу получить отзыв пользователя о том, что пошло не так.Обратный вызов ошибки выполняется, но сообщение об ошибке не отправляется обратно клиенту.

Вызов JQuery:

var validateButton = $('#validateSteps');
validateButton.bind('click', function() {
    var stepsInput = $(':input').serializeArray();
    $.postJSON('validate.htm', stepsInput, function(data) {
        alert(data);
        var steps = $('#steps');
        var i = 0;
        for(i=0;i<data.length;i++) {
            steps.stepWidget('setValidationStatus', {testStepId: data[i].testStepId, interactionType: data[i].interactionType, validationStatus: data[i].validationStatus} );
            steps.stepWidget('setErrorDescriptions', {testStepId: data[i].testStepId, interactionType: data[i].interactionType, errorDescriptions: data[i].errorDescriptions} );
        }
        return false;
    }, {
            error: function (XMLHttpRequest, textStatus, errorThrown, data) {
                alert("error function");
                alert(textStatus);
                alert(errorThrown);               
                alert("Internal Server Error: " + data);
            return false;
        }
    });
    return false;
});

Контроллер:

@RequestMapping(value = "validate.htm", method = RequestMethod.POST)
public @ResponseBody
List<ValidationBean> validateSteps(
        @RequestBody List<Map<String, String>> testCaseInputs,
        HttpServletResponse response) throws MalformedMessageException,
        MalformedProfileException, XmlException, IOException,
        MissingDependencyException, MessageValidationException {
    List<ValidationBean> validations = new ArrayList<ValidationBean>();
    ...
    return validations;
}

ИсключениеОбработчик в контроллере:

@ExceptionHandler(Exception.class)
public @ResponseBody
String handleException(Exception e, HttpServletResponse response) {
    response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    return e.getMessage();
}

То, что я хочу показать пользователю, это String, который должен быть возвращен методом handleException.В обратном вызове error параметр data равен undefined.

1 Ответ

3 голосов
/ 13 апреля 2011

Проверьте мой ответ на очень похожий вопрос: Spring MVC, возвращающий JSONS и обработку исключений

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