java.sql.SQLIntegrityConstraintViolationException: Column 'reportcontents' cannot be null
에러는 아래와 같다. Column값에 있는 reportcontents를 불러올수 없다는 말이다.
쉽게말해 DB에 만들어놓은 값을 view 혹은 controller 쪽에 선언을 해줬냐 라는 말이다
신고하기 기능을 구현하면서 사용자가 글을 작성하면 reportcontenst라는 신고내용안에 글을 넣을수 있도록한다.
에러가 뜨자마자
1) mapping쪽에 쿼리문이 틀리지는 않았는지?
2) Controller에 파라미터값을 잘못넣어주지는 않았는지?
3) View쪽에 넘겨받으면서 값이 잘못되지는 않았는지?
살펴볼 필요가 있었다.
필자의 문제같은 경우에는 1번 2번에는 오류가 없다는 것을 확인하였다. 물론 2가지가 잘못되었다면 다른 오류도 뜨는 것이 분명해 보였다.
처음에는 저 셋중에 name값의 이름이 잘못된것을 볼 수 있었다. 구현전에 이름을 아무거나 넣으면서 막상 input을 하려니까
계속 저런 오류를 뱉어낸것이었다. 저 오류가 뜨자마자 Query쪽에 오류가 있다는 초점을 맞추었다. 예상은 틀렸지만 그래도
나중에 구현할때는 실수하는 부분을 줄일 수 있을 것 같다.
추가로 submit을 누르고 모든 DB의 값이 조회가 되려면 <form></form> 태그를 잊어서는 안된다. 그렇지않으면 submit을 눌렀을때 화면의 변화가 없을 것이다.
참고로 get/post 방식이 헷갈리는 경우가 있어서 한번에 정리해본다. Get은 주로 Create부분에서 작성해줄 때 보여주는 화면이 그렇게 많지않을 때 작성폼을 return을 해주는 allreport, postmapping은 글 작성이 끝나고 다시 작성 전으로 돌아갈수 있게 redirect
둘의 매핑주소는 같음(이유는 같은 화면으로 보여줘야하는 이유이기 때문에!!)