Spring MVC + Ajax. Как отображать ошибки?

Мое веб-приложение Spring использует ajax с Spring, и оно в целом основано на демонстрационном приложении, предоставляемом spring:

https://src.springframework.org/svn/spring-samples/ mvc-ajax / trunk / (Дополнительная информация: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ )

На стороне клиента у меня есть form (JSP):

  
    
Level Name

Я отправляю форму на сервер с помощью следующего метода js:

$("#createLevel").submit(function() {
        var level = $(this).serializeObject();
        $.postJSON("create.do", level, function(data) {
            alert(data);
        });
        return false;               
    });

На стороне сервера у меня есть проверка, как показано ниже:

public final class LevelDto extends AbstractDto implements Serializable {
    private static final long serialVersionUID = 1L;

    private int id;

    @NotNull
    @Size(min = 2, max = 30)
    @LevelExistsConstraint(message = "Level with provided name is exists")
    private String name;
    // set; get;
}

И контроллер

   @RequestMapping(value = "/admin/create.do", method = RequestMethod.POST)
    public @ResponseBody
Map createLevel(@RequestBody LevelDto level,
        HttpServletResponse response) {
    //JSR-303 
    Set> failures = validator.validate(level);

    if (!failures.isEmpty()) {
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        return validationMessages(failures);

    } else {

        return Collections.singletonMap("id", 10);

    }
}

Когда я отправляю неверный данные на сервер Я вижу, что все происходит правильно - мой валидатор обрабатывает данные, а клиент получает ответ об ошибке; кроме того, в ответе я вижу следующее:

{"name":"size must be between 2 and 30"}

Моя проблема в том, что я не знаю, как правильно привязать полученное сообщение об ошибке. Очевидно, я могу сделать это с помощью js, но я думал, что Spring автоматически привязывает все сообщения об ошибках к представлению.

Любая помощь приветствуется. Я наследую my_exception от стандартного класса исключений. Я реализую функцию what () так, чтобы ...

Я хочу создать класс с функциями, которые могут генерировать исключения, которые я хочу перехватывать, когда я его использую. Я наследую my_exception от стандартного класса исключений. Я реализую функцию what () так, чтобы она возвращала строку, которая хранится в частной строковой переменной

. Я думаю, что было бы лучше определить исключение как вложенный класс, как это делается в библиотеке iostream с помощью ios_base :: ошибка.

В чем я менее уверен, так это в том, где и как я должен определить объект my_excpetion. Хотел бы я увидеть внутренний код функций iostream и посмотреть, как они это делают. Я подумал о нескольких вариантах:

  1. Для каждой причины исключения я могу определить статический экземпляр my_exception с конструктором, который получает строку и сохраняет ее в моем частном указателе строки.

  2. Для каждой причины исключения я могу определить другой класс, унаследованный от my_exception, и реализовать его как функцию, возвращающую постоянную строку (причину). Я могу хранить экземпляр каждого из этих подклассов исключений или выдавать тип. Кстати, когда мы обычно выбрасываем тип, а не экземпляр?

  3. Думаю, это неправильно: каждый раз, когда я хочу выбросить исключение, создавать новое my_exception с конструктором, который получает строку. Это сделано на Java, но, как я понимаю, в C ++ это будет проблематично, потому что исключение нужно где-то удалить. Так?

Я думаю, что первый правильный, не так ли? Есть ли другие стандартные параметры?

Большое спасибо!

12
задан ip84 28 May 2011 в 04:40
поделиться