Java EE/Spring MVC를 사용하는 백엔드 시스템에 AJAX/JSON과 연결된 HTML/jQuery가 포함 된 웹 응용 프로그램이 있습니다.JavaScript - Spring MVC 기반의 백엔드 시스템에서 오류 메시지를 표시하는 방법
프론트 엔드에서, 사람은 양식을 기입하여 만들 수 있습니다 후 제출되고이 jQuery 코드가 실행 : 가장 좋은 경우
var person = $(this).serializeObject();
$.postJSON("add/", person, function(data) {
alert("Person with ID "+data.person.id+"' added successfully");
});
는 사람이 만들어지고 난거야 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;
}
내 Person 객체가 주석, 나는 그 예를 들어, 콘솔에 System.out.println(failure.getPropertyPath().toString()+" - "+failure.getMessage());
를 얻을 수있다 -
그러나 frontend 시스템의 jQuery에서 어떻게 경고 메시지를 만들 수 있습니까?
도움을 주셔서 감사합니다. & 최고 감사합니다.
업데이트 : validationMessages
메소드를 발견 한 Spring MVC AJAX 예제에 링크하십시오. 그러나 오류 메시지를받는 방법도 없습니다.
해결 :
내가 전화를해야 :
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);}
});
를 사용해야 할 것 HttpServletResponse.SC_BAD_REQUEST); 그렇지 않으면 작동하지 않습니다. 하지만 왜이 튜토리얼에서 http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ 이것이 완료 되었습니까? – Tim
업데이트가 표시되지 않습니다 ... – Tim
@Tim 저의 글을 쓰고있는 동안, 실수를 저질렀다는 것을 깨달았습니다. 개념적으로 오류가 발생했기 때문에 잘못된 요청을 되돌려 보내는 것이 합리적입니다. 그러나 오류 메시지 세부 정보를 다시 보내는 방법을 모르겠습니다. (어쩌면 당신은 textStatus를 추측 할 수 ... 못생긴). 그래서 당신의 경우에는 오류 메시지를 다시 받기를 원하므로 줄을 제거해야합니다. –