У меня есть веб-приложение с HTML / jQuery, которое связано с AJAX / JSON с бэкэнд-системой с Java EE / Spring MVC.
Во внешнем интерфейсе Person можно создать, заполнив поля формы, а затем отправив его и выполнив код jQuery:
var person = $(this).serializeObject();
$.postJSON("add/", person, function(data) {
alert("Person with ID "+data.person.id+"' added successfully");
});
В лучшем случае Person создается, и я получаю объект Person, и я могу получить доступ к значениям с помощью data.person.*
.
Теперь я хочу проверить данные, которые отправляются в бэкэнд-систему, и в случае ошибки я хочу отобразить на первом шаге сообщение об ошибке оповещения.
Я сделал это в бэкэнд-системе:
@RequestMapping(value="add/", method=RequestMethod.POST)
public @ResponseBody Map<String, ? extends Object> addPerson(@RequestBody Person p, HttpServletResponse response) {
Set<ConstraintViolation<Person>> failures = validator.validate(p);
if (!failures.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return validationMessages(failures);
} else {
Person person = this.personService.addPerson(p);
return Collections.singletonMap("person", new SerialPerson(person.getId(), person.getName(), ...));
}
}
// internal helpers
private Map<String, String> validationMessages(Set<ConstraintViolation<Person>> failures) {
Map<String, String> failureMessages = new HashMap<String, String>();
for (ConstraintViolation<Person> failure : failures) {
failureMessages.put(failure.getPropertyPath().toString(), failure.getMessage());
System.out.println(failure.getPropertyPath().toString()+" - "+failure.getMessage());
}
return failureMessages;
}
Объект My Person аннотирован, и я получаю System.out.println(failure.getPropertyPath().toString()+" - "+failure.getMessage());
на консоли, что, например, «имя - должно быть от 1 до 30 символов»
Но как создать сообщение с предупреждением в jQuery в системе внешнего интерфейса?
Заранее благодарю за помощь и наилучшие пожелания.
Обновление : ссылка на пример Spring MVC AJAX, где я нашел метод validationMessages
. Но также нет решения, как получить сообщение об ошибке.
РЕШЕНИЕ
Мне нужно позвонить:
jQuery.ajax({
'type': 'POST',
'url': "add/",
'contentType': 'application/json',
'data': JSON.stringify(person),
'dataType': 'json',
'success': function(data) {alert("success");},
'error': function(xhr) {alert(xhr.responseText);}
});