Spring MVC 애플리케이션에서 적절한 유효성 검증 메시지를 표시하는 방법을 찾으려고합니다.스프링 MVC - REST 웹 서비스. Bean 유효성 검사 메시지
@Entity
@Table(name="employees")
public class Person {
private Integer person_id;
private String name;
private String name2;
private String email;
private double phone;
private String desc;
@Id
@Max(value=500)
@Column (name="id")
public Integer getPerson_id() {
return person_id;
}
public void setPerson_id(Integer person_id) {
this.person_id = person_id;
}
@NotNull
@NotEmpty
@Column (name="fn")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="ln")
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
@Email
@Column (name="em", unique = true)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(name="phone")
public double getPhone() {
return phone;
}
public void setPhone(double phone) {
this.phone = phone;
}
@Column (name="de")
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String toString() {
return getName() + " - " + getName2() + " - " + getEmail();
}
}
내 컨트롤러 방법 :이 제대로 작동
//POST
@RequestMapping(value="/persons", method = RequestMethod.POST, headers="Accept=*/*",
consumes="application/json")
public String getAllPersons(@RequestBody @javax.validation.Valid Person p, BindingResult br){
System.out.println(br.getAllErrors());
personService.savePerson(p);
return "redirect:persons.htm"; // redirects to the method below.
}
//GET
@RequestMapping(value="/persons", method = RequestMethod.GET, headers="Accept=*/*",
produces="application/json")
@ResponseBody
public List<Person> getAllPersons(){
List<Person> persons = personService.listPersons();
for (Person person : persons) {
System.out.println(person.getEmail());
}
if (persons == null) {
return null;
}
return persons;
}
이
은 예 콩입니다. 그러나 유효성 검사 오류가있는 경우 나는 단지 평범한 메시지를 받는다 :validation failed for: com.springmvcsample.controller.Person
필드와 검증에 실패했다.
유효성 검사에 실패한 필드 이름을 가져 오는 방법은 무엇입니까? 나는 BindingResults
개체로부터 파일명을 얻을 수 있다고 생각하지 않는다.
예를 찾아 보았습니다. 그러나 다양한 예제를 얻지 만, 내가해야 할 일과 같은 것은 아닙니다.
내 예외 처리기 방법 :
@ExceptionHandler(Exception.class)
@ResponseBody
public String handleException(Exception e) {
return e.getMessage();
}
유효성 검사 오류가 발생했을 때 어떤 POST 데이터가 있습니까? –
귀하의 질문에 대한 이해가 확실하지 않습니다. 유효성 검사가 작동하는지 확인하기 위해 id> 500 인 JSON을 게시 중입니다. 그것은 작동합니다. 그러나 나는 위의 일반화 된 메시지를 얻는다. –
[BindingResult API] (http://static.springsource.org/autorepo/docs/spring/3.2.0.M1/api/org/springframework/validation/Errors.html#getAllErrors())). 영향을받는 필드를 반환하는'getFieldError()'와 같은 메소드가 있습니다. –