Validation을 이용하여 값이 입력되었는지 등등을 설정해주었다.
@AllArgsConstructor
@Getter
public class QuestionForm{
@NotEmpty(message = "제목은 필수 항목입니다.")
@Size(max = 200, message = "제목을 200자 이하로 입력해주세요.")
private String subject;
@NotEmpty(message = "내용은 필수 항목입니다.")
private String content;
}
org.springframework.validation.BeanPropertyBindingResult
프로젝트를 실행시켜 값이 제대로 입력되지 않았을 경우, 에러 문구가 잘 뜨는지 확인하고자 했는데, 이러한 오류가 발생했다!
이유는, Controller에서 찾을 수 있었다!!
@PostMapping("/create")
public String questionCreate(@Valid QuestionForm questionForm, Model model, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "question_form";
}
questionService.create(questionForm.getSubject(), questionForm.getContent());
return "redirect:/question/list";
}
@Valid 어노테이션이 붙은 questionform 뒤에 바로 BindingResult가 위치해야 오류가 발생하지 않는다.
@PostMapping("/create")
public String questionCreate(@Valid QuestionForm questionForm, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "question_form";
}
questionService.create(questionForm.getSubject(), questionForm.getContent());
return "redirect:/question/list";
}
순서를 바꿔주어서 해결
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-arguments
반응형