Spring MVC Form Validation이 안된다..

전승원·2020년 12월 24일
0

Jpa

목록 보기
1/2

참조 소스: https://spring.io/guides/gs/validating-form-input/

@Entity
@Data
public class Board {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Size(min=3, max=30)
    private String title;
    private String content;
}

@Controller
public class WebController implements WebMvcConfigurer {

    @GetMapping("/form")
    public String form(Model model, @RequestParam(required = false) Long id) {
        if (id == null) {
            model.addAttribute("board", new Board());
        } else {
            Board board = boardRepository.findById(id).orElse(null);
            model.addAttribute("board", board);
        }
        return "board/form";
    }

    @PostMapping("/form")
    public String submitPost(@Valid Board board, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return "board/form";
        }
        boardRepository.save(board);
        return "redirect:/board/list";
    }
}

위와 같이 submitPost 함수에서 bindingResult.hasErrors() 로 validation 체크를 해줬지만, title의 글자 수가 2미만 인데도, 그냥 통과하고 post가 올라갔다. 디버그 모드로 체크한 결과, hasErrors() 부분에서 아무런 에러의 사이즈가 0이었다.

튜토리얼 프로젝트이기 때문에 스프링을 다운그레이드 하는 방법도 있었지만, 너무 귀찮기도 했고.. 최적의 해결책은 아니었기 때문에, 다른 방법을 찾은 결과..

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.0.Final</version>
</dependency>

다음과 같이 hibernate-validator dependency를 따로 추가해주니 해결되었다

참고로, BeanValidation을 구현한 것이 Hibernate Validator이다. 이에 대해서는 다음에 다루어 봐야겠다.

profile
No pleasure, No gain

0개의 댓글