Мое веб-приложение 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 и посмотреть, как они это делают. Я подумал о нескольких вариантах:
Для каждой причины исключения я могу определить статический экземпляр my_exception с конструктором, который получает строку и сохраняет ее в моем частном указателе строки.
Для каждой причины исключения я могу определить другой класс, унаследованный от my_exception, и реализовать его как функцию, возвращающую постоянную строку (причину). Я могу хранить экземпляр каждого из этих подклассов исключений или выдавать тип. Кстати, когда мы обычно выбрасываем тип, а не экземпляр?
Думаю, это неправильно: каждый раз, когда я хочу выбросить исключение, создавать новое my_exception с конструктором, который получает строку. Это сделано на Java, но, как я понимаю, в C ++ это будет проблематично, потому что исключение нужно где-то удалить. Так?
Я думаю, что первый правильный, не так ли? Есть ли другие стандартные параметры?
Большое спасибо!