💡 현재 상황
보통 jsp에서 controller로 값을 넘길 때 아래 2가지 방법을 썼다
1. ajax 사용하기
2. form 태그를 submit 하기
1번 방법(ajax) 사용 시
장점
👉🏻 success 속성을 이용해 function(매개변수) {} 로 손쉽게 controller의 값을 받아와 jsp에서 조건 검사를 할 수 있음
즉, jsp에서 alert창을 띄울 때 용이함
단점
👉🏻 jsp에서 controller로 값을 넘길 때 data 속성에 키:밸류 값을 넘겨 줘야 함
즉, $("선택자").find("선택자").val()과 같이 넘길 요소의 값을 한 번 더 뽑아 줘야 하는 번거로움이 있음
2번 방법(form 태그 submit) 사용 시
장점
👉🏻 jsp에서 controller로 값을 넘길 때 form 태그 내의 input 태그 name값만 제대로 설정해 주고 일치시키면 controller에서 받을 수 있음
즉, 별도의 가공 없이 jsp에서 controller로 값을 넘길 수 있음
단점
👉🏻 controller에서 jsp로 값을 뿌려 줄 때 Model 혹은 ModelAndView로 가공해서 보내야 함
적고 보니 jsp에서 가공해 주냐, controller에서 가공해 주냐의 차이인 것 같음
하지만 모달창을 활용하거나 코드가 복잡해질 경우 제이쿼리 선택자로 값을 뽑을 때 신경 쓸 게 많기 때문에
나의 경우 모달창을 form 태그로 감싸로 submit 하는 것이 수월했음
보통 Model을 넘겨 뿌려 주기는 하지만 alert창만 띄워 주고 싶을 때는 아래 2가지 방법을 활용해 보자
방법 1️⃣. controller에서 응답 데이터로 <script> 구문을 return 해 주기
int resultNum = reviewService.reportComment(map);
if(resultNum > 0) {
return "<script>"
+ "alert('성공적으로 신고 접수되었습니다.');"
+ "location.href='commentList.co';"
+ "</script>";
} else {
return "<script>"
+ "alert('신고 접수에 실패하였습니다. 잠시 후 다시 시도해 주세요.');"
+ "location.href='commentList.co';"
+ "</script>";
}
신고 모달창에 대한 insert 구문을 작성했을 때 int resultNum값은 0 또는 1이 됨
이때 controller에서 if문으로 조건 검사를 하고 위와 같이 <script> 태그 내용 자체를 return 해 줘도 alert창을 띄울 수 있음
👉🏻 jsp에서 따로 건드릴 내용이 없기 때문에 매우 용이함!
그런데 이게 안 먹히는 경우가 생각보다 많다
당장 나만 해도 신고 모달창에서는 잘 먹혔는데 밑의 수정 모달창에서는 먹히지 않아 아래 방법을 썼음
방법 2️⃣. Controller에서 ModelAndView, jsp에서 el구문 사용하여 alert창 띄우기
💻 controller
int updateResult = reviewService.updateMyComment(map);
if(updateResult > 0) {
mv.addObject("Msg", "코멘트 수정이 완료되었습니다.");
} else {
mv.addObject("Msg", "코멘트 수정에 실패했습니다. 잠시 후 다시 시도해 주세요.");
}
mv.setViewName("contents/commentListView");
return mv;
수정 모달창 또한 update 구문을 작성했을 때 int updateResult 값은 0 또는 1이 됨
해당 메소드의 매개변수로 ModelAndView mv를 추가해 준 상태이며,
조건에 따라 "키", "밸류"로 alert에 넣어 줄 동일한 키값과 각각의 밸류값을 넣어 줌
💻 jsp
<script>
<c:if test="${ not empty Msg }">
alert('${ Msg }');
</c:if>
</script>
jsp script 구문 내에서도 el 구문이 먹힘!
나는 Msg라는 키값에 조건에 따른 밸류값을 넘겼으므로 jsp에서는 <c:if>로 조건식을 주면 됨
👉🏻alert('${키값}') 을 기재할 때 꼭! 따옴표 붙여 주기! 안 붙이면 오류 남